您的位置:首页 > 移动开发

PreferenceActivity简单使用app设置页

2014-12-11 14:54 281 查看
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 implements
OnSharedPreferenceChangeListener {
private ListPreference mListPreference;
private EditTextPreference mEditTextPreference, mNumPreference;
private CheckBoxPreference mBoxPreference;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.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");
}

@Override
protected void onResume() {
// TODO Auto-generated method stub
super.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);
}

@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
getPreferenceScreen().getSharedPreferences()
.unregisterOnSharedPreferenceChangeListener(this);
}

@Override
public 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", ""));
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: