关于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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Nginx+PHP(laravel) 环境 499 错误码排查过程小记

    Nginx+PHP(laravel) 环境 499 错误码排查过程小记

    2022年2月17日
    45
  • QListWidget的使用

    QListWidget的使用QListWidgetQListWidget类提供了一个基于item的列表小部件。QListWidget是一个方便的类,它提供了类似于QlistView所具有的列表视图,但是具有增加和删除的功能。QListWidget使用内部模型来管理列表中的每个QListWidgetItem。想要有更灵活的列表视图,请使用具有标准模型的QListView类。QlistWidget有两种方法追加数据,一种

    2022年5月3日
    77
  • HTML CSS整理笔记[通俗易懂]

    HTML CSS整理笔记[通俗易懂]常见字体单位:1.em移动端常用的字体尺寸单位,说白em就相当于“倍”,比如设置当前的div的字体大小为1.5em,则当前的div的字体大小为:当前div继承的字体大小*1.5。但当div进行嵌套时,em始终按当前div继承的字体大小来缩放。2.remr是root的意思,即相对于根节点html的font-size进行缩放,当有嵌套关系时,嵌套关系的元素的字体大小始终按照根节点的字体大小…

    2022年6月26日
    26
  • 获取股票历史数据(网易163行情接口)[通俗易懂]

    获取股票历史数据(网易163行情接口)获取股票历史数据,通过网易163接口来获取数据,可以获取指数数据,也可以获取股票数据importpandasaspd#沪市前面加0,深市前面加1,比如0000001,是上证指数,1000001是中国平安defget_daily(code,start=’19900101′,end=”):url_mod=”http://quotes.money.163.com/service/chddata.html?code=%s&start=%s

    2022年4月17日
    54
  • java se与java 的区别_java se与java的区别是什么

    java se与java 的区别_java se与java的区别是什么Java是一门程序设计语言,它有三个版本,JavaSE(标准版)、JavaEE(企业版)和JavaME(微型版)。而JavaSE只是一个使用Java进行编程的规范、框架,它不是一门编程语言。JavaSE(javastandardedition),一般包括jdk、jre以及各种API文档等。JavaSE(JavaPlatform,StandardEdition)。JavaSE以…

    2022年7月9日
    25
  • 367. 学校网络(Tarjan强连通分量)[通俗易懂]

    367. 学校网络(Tarjan强连通分量)[通俗易懂]一些学校连接在一个计算机网络上,学校之间存在软件支援协议,每个学校都有它应支援的学校名单(学校 A 支援学校 B,并不表示学校 B 一定要支援学校 A)。当某校获得一个新软件时,无论是直接获得还是通过网络获得,该校都应立即将这个软件通过网络传送给它应支援的学校。因此,一个新软件若想让所有学校都能使用,只需将其提供给一些学校即可。现在请问最少需要将一个新软件直接提供给多少个学校,才能使软件能够通过网络被传送到所有学校?最少需要添加几条新的支援关系,使得将一个新软件提供给任何一个学校,其他所有学校就都可

    2022年8月9日
    9

发表回复

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

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