关于PreferenceActivity的使用和一些问题的解决(自己定义Title和取值)

关于PreferenceActivity的使用和一些问题的解决(自己定义Title和取值)

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

android的Setting往往用PreferenceActivity来写的

我们在建立layout文件:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="常规设置" android:key="set_local">
	<CheckBoxPreference
            android:key="new_message_notify"
            android:title="新消息通知"
            android:defaultValue="true"
            android:summary="收到新消息时是否须要通知" />

        <RingtonePreference
            android:layout="?android:attr/preferenceLayoutChild"
            android:dependency="new_message_notify"
            android:key="account_ringtone"
            android:title="铃声"
            android:ringtoneType="notification"
            android:defaultValue="content://settings/system/notification_sound" />

        <CheckBoxPreference
            android:layout="?android:attr/preferenceLayoutChild"
            android:dependency="new_message_notify"
            android:key="account_vibrate"
            android:defaultValue="false"
            android:title="振动"/>
</PreferenceCategory>
<PreferenceCategory android:title="个人设置" android:key="personal_local">
	<Preference android:key="clear_cache"
		android:summary="点击将清理应用程序的缓存" android:title="清除缓存" defaultValue="false">
	</Preference>
	<CheckBoxPreference android:key="save_setting"
		android:summary="下次开启记住个人设置" android:title="保存个人设置" android:defaultValue="true">
	</CheckBoxPreference>
	
	<EditTextPreference
	    android:key="edit_text"
	    android:title="Edit" android:summary="EditTextPreference"
	></EditTextPreference>
	
	<SwitchPreference
	    android:key="switch" android:summary="SwitchPreference"
	></SwitchPreference>
	
	<ListPreference
	    android:key="list" android:summary="ListPreference" android:entries="@array/entry" android:entryValues="@array/entry_value" android:title="ListTitle"
	></ListPreference>
	
	<MultiSelectListPreference 
	    android:summary="MultiSelectListPreference" android:key="mutiSelect" android:entries="@array/entry" android:entryValues="@array/entry_value" android:title="mutiTitle"
	    />
</PreferenceCategory>
</PreferenceScreen>

类的代码例如以下:

public class Settings extends PreferenceActivity {


	@Override
	protected void onCreate(Bundle savedInstanceState) {
		//这个是给Settings加自己定义Title
		final boolean isCustom = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
		super.onCreate(savedInstanceState);
		if(isCustom){
			getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_list);
		}
		TextView title_text = (TextView)findViewById(R.id.title_text);
		title_text.setText("Settings");
		Button back = (Button)findViewById(R.id.back);
		back.setVisibility(View.VISIBLE);
		back.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				finish();
				
			}
		});
		
		addPreferencesFromResource(R.xml.seting_preferences);

	}

}

定义themes,把这个activity的theme设置成下面的样子

    <style name="AppTheme" parent="AppBaseTheme">  
  
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->  
        <!-- 避免反复设置标题 -->  
        <item name="android:windowActionBar">false</item>  
        <!-- 设置标题栏宽度 -->  
        <item name="android:windowTitleSize">60dp</item>   //titlebar的高度
        <!-- <item name="android:windowTitleBackgroundStyle">@style/CustomWindowTitleBackground</item> -->  
    </style>

取值的时候能够这样做:

SharedPreferences shp = PreferenceManager.getDefaultSharedPreferences(this);
		String s = shp.getString("list", null);  //这个是取ListPreference
		TextView listData = (TextView)findViewById(R.id.listData);
		listData.setText(s);
		
		HashSet set = (HashSet) shp.getStringSet("mutiSelect", null); //这个是取MultiSelectListPreference的值
		Iterator<String> it = set.iterator();
		String content = "";
		while(it.hasNext()) {
			content += it.next()+",";
		}
		TextView muti_select_data = (TextView)findViewById(R.id.muti_select_data);
		muti_select_data.setText(content);

截图是:

关于PreferenceActivity的使用和一些问题的解决(自己定义Title和取值)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/118967.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Qt中文本编辑器实现语法高亮功能(Qscitinlla)

    Qt中文本编辑器实现语法高亮功能(Qscitinlla)

    2021年11月19日
  • lstm怎么预测长时间序列_时间序列预测代码

    lstm怎么预测长时间序列_时间序列预测代码写在前面LSTM模型的一个常见用途是对长时间序列数据进行学习预测,例如得到了某商品前一年的日销量数据,我们可以用LSTM模型来预测未来一段时间内该商品的销量。但对于不熟悉神经网络或者对没有了解过RNN模型的人来说,想要看懂LSTM模型的原理是非常困难的,但有些时候我们不得不快速上手搭建一个LSTM模型来完成预测任务。下面我将对一个真实的时间序列数据集进行LSTM模型的搭建,不加入很多复杂的功能,快速的完成数据预测功能。问题大概如下:某煤矿有一个监测井,我们每20分钟获…

  • TTL转RS232电路–分享原理图和参考资料

    RS232串口经常用到,本文分享下RS232协议方面基本点,并介绍一种简单的串口TTL(3.3V)电平转换为RS232电平的电路,这个电路是经过制板验证过的。使用芯片MAX3232E(tssop16封装),电源用3.3V,电路如下图MAX3232是支持两路uart转成RS232,分享的电路只接了一路,如有需要可以接两路另外上面电路是没有做隔离的,如果要做成隔离式的,可以加上光电开关。…

  • 安全测试常用的几个工具有_工具软件有哪些

    安全测试常用的几个工具有_工具软件有哪些下面介绍了这些工具的主要功能以及教程、书籍、视频等。端口扫描器:NmapNmap(NetworkMapper)是一款著名的、用来扫描端口和绘制网络的免费开源基于控制台的黑客工具。Nmap被用于发

  • js 删除对象里的某个属性[通俗易懂]

    删除属性有很多方法,学到了就在这里记录一下。有一个对象a。有2个属性b=1,c=2删除b,保留c1.使用deleteleta={b:1,c:2}deletea.b//trueconsole.log(a)//{c:2}2.使用解构leta={b:1,c:2}let{b,…a}=aconsole.log(a)//{c:2}…

  • Pytest(1)安装与入门[通俗易懂]

    Pytest(1)安装与入门[通俗易懂]pytest介绍pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。根据pytest的官方网站介绍,它

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号