PreferenceActivity简单使用app设置页

来源:互联网 发布:七星彩庄家统计软件 编辑:程序博客网 时间:2024/05/18 01:50

PreferenceActivity一般用来实现app的设置页

如图:























PreferenceActivity就是用SharedPreference的形式存储用户的偏好设置。 

PreferenceActivity通过读取xml的方式来显示页面,控件都是封装好的,实用起来特别方便。 

1.先在res下新建一个xml文件 preference.xml

<?xml version="1.0" encoding="UTF-8"?><PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >//根节点    <PreferenceCategory android:title="FirstCategory" >//分割线隔开的一个一个分类        <ListPreference            android:defaultValue="list key default values"            android:dialogTitle="list_dialog_title"            android:entries="@array/list_array"            android:entryValues="@array/list_array"          //单选的list            android:key="list_key"            android:summary="list summary"            android:title="list title" >        </ListPreference>    </PreferenceCategory>    <PreferenceCategory android:title="Second Category" >        <EditTextPreference            android:defaultValue="edit default value"            android:key="edit_text_key"                      //编辑框样式            android:summary="edit summary"            android:title="edit_title" >        </EditTextPreference>        <CheckBoxPreference            android:defaultValue="checkbox default value"            android:key="checkbox_key"            android:summary="checkbox_summary"                //复选框样式            android:title="checkbox_title" />        <EditTextPreference            android:defaultValue="0"            android:key="num_key"            android:numeric="integer"            android:summary="edit summary"            android:title="input number" />        <PreferenceScreen            android:summary="more..."            android:title="more" >            <PreferenceCategory android:title="more_title" >      //嵌套一个根节点,实际点击的时候跳转新的一个屏幕                <CheckBoxPreference                    android:defaultValue="abcd"                    android:key="more_key"                    android:summary="more_key"                    android:title="MORE" />            </PreferenceCategory>        </PreferenceScreen>    </PreferenceCategory></PreferenceScreen>

2.新建MyPreferenceActivity 继承 PreferenceActivity

在onCreatefang方法中addPreferencFromResource(int id)加载xml

实例化,实现OnSharedPreferenceChangeListener当值发生变化是可改变控件的值,

在onResum中初始化控件的值

public class MyPreferenceActivity extends PreferenceActivity implementsOnSharedPreferenceChangeListener {private ListPreference mListPreference;private EditTextPreference mEditTextPreference, mNumPreference;private CheckBoxPreference mBoxPreference;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);addPreferencesFromResource(R.xml.preference);initPreference();}private void initPreference() {mListPreference = (ListPreference) findPreference("list_key");mEditTextPreference = (EditTextPreference) findPreference("edit_text_key");mNumPreference = (EditTextPreference) findPreference("num_key");mBoxPreference = (CheckBoxPreference) findPreference("checkbox_key");}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();SharedPreferences mSharedPreferences = getPreferenceScreen().getSharedPreferences();mListPreference.setSummary(mSharedPreferences.getString("list_key", ""));mEditTextPreference.setSummary(mSharedPreferences.getString("edit_text_key", ""));// mNumPreference.setSummary(mSharedPreferences.getInt("num_key", 0));// mBoxPreference.setSummary(mSharedPreferences.getString("checkbox_key",// ""));mSharedPreferences.registerOnSharedPreferenceChangeListener(this);}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);}@Overridepublic void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {if (arg1.equals("edit_text_key")) {mEditTextPreference.setSummary(arg0.getString("edit_text_key", "20"));} else if (arg1.equals("list_key")) {mListPreference.setSummary(arg0.getString("list_key", ""));}}}

 




0 0
原创粉丝点击