关于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和取值)

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • json_decode用法

    json_decode用法$json='{“a”:1,”b”:2,”c”:3,”d”:4,”e”:5}’;//解析为json对象var_dump(json_decode($json));//解析为数组var_dump(json_decode($json,true));代码执行结果object(stdClass)#1(5){[“a”]=>int(1)[“b”]=>int(2)[“c”]=>int(3)[“d”]=>int(4)

    2022年7月17日
    20
  • Python Qt GUI设计:5种事件处理机制(提升篇—3)

    Python Qt GUI设计:5种事件处理机制(提升篇—3)事件处理机制本身很复杂,是PyQt底层的知识点,当采用信号与槽机制处理不了时,才会考虑使用事件处理机制。

    2022年5月16日
    47
  • jQuery对话框右上角带关闭×

    jQuery弹出可关闭遮罩层:http://hovertree.com/texiao/layer/1/代码如下:转自:http://hovertree.com/h/bjaf/tishiceng.ht

    2021年12月23日
    41
  • java程序出现问题:java.sql.SQLException: ORA-01008: 并非所有变量都已绑定

    java程序出现问题:java.sql.SQLException: ORA-01008: 并非所有变量都已绑定异常提示是并非所有变量都已绑定,实际上从sql语句上看是没有问题,直接使用在数据库也是有效的,那么他为什么会报ORA-01008:并非所有变量都已绑定,这个这个问题一般出现在sql语句,因为程序写的sql语句可能出现所查询没有的字段,而此处sql语句没有错误,出问题的地方是preparedStatemnt.executeUpdate(sql)这条语句,这是使用PreparedStateme…

    2025年9月2日
    10
  • Qt:emit是个什么?

    Qt:emit是个什么?槽机制例子中有用到过emit这个关键词也在注释中进行了详细解释这里总结一下emit是Qt中的关键字也是个宏。表示“发出”,后面所带的信号以类似广播形式发送出去。感兴趣的接受者会关注这个信号。…

    2022年5月16日
    100
  • 暴力破解带有密码的压缩文件

    暴力破解带有密码的压缩文件一暴力破解,就是不断生成新的密码去尝试能否破解成功。假如我们的密码位数为3位,其里面的值有可能是0或者1,其产生的密码集的数量为2的3次幂,也就是八个,然后一个一个去破解。而这生成这8个密码的过程就有一个递归规则存在。我们传入深度deep和对应字符串passwd两个参数,如果深度为1,直接输出字符串passwd,如果深度不为1,把深度deep减一,并把可能存在的字符串集合[0,1]遍历,添加…

    2022年5月7日
    112

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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