运行结果:
[img]http://dl.iteye.com/upload/attachment/536602/2768b06d-283b-31a6-b5a9-d2fcb399d74d.jpg[/img]
[img]http://dl.iteye.com/upload/attachment/536604/0bc1174a-81a4-3a85-9c90-57748005fe8c.jpg[/img]
main.xml:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="PreferenceCategory 1">
<CheckBoxPreference android:key="CheckBox1"
android:title="CheckBox" android:summaryOn="某功能: 开启"
android:summaryOff="某功能: 关闭" android:defaultValue="true" />
</PreferenceCategory>
<PreferenceCategory android:title="PreferenceCategory 2">
<PreferenceScreen android:title="二级PreferenceScreen">
<CheckBoxPreference android:key="CheckBox2"
android:title="CheckBox" android:summaryOn="某功能: 开启"
android:summaryOff="某功能: 关闭" android:defaultValue="true" />
</PreferenceScreen>
</PreferenceCategory>
<PreferenceCategory android:title="PreferenceCategory 3">
<ListPreference android:key="ListPreference"
android:title="ListPreference" android:summary="ListPreference测试"
android:dialogTitle="ListPreference" android:entries="@array/entries_list_preference"
android:entryValues="@array/entriesvalue_list_preference" />
<EditTextPreference android:key="EditTextPreference"
android:title="EditTextPreference" android:summary="点击输入"
android:dialogTitle="输入设置" />
<RingtonePreference android:key="RingtonePreference"
android:title="RingtonePreference" android:summary="选择铃声" />
</PreferenceCategory>
</PreferenceScreen>
array.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="entries_list_preference">
<item>test1</item>
<item>test2</item>
<item>test3</item>
</string-array>
<string-array name="entriesvalue_list_preference">
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
</resources>
activity.java
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.layout.main);
}
以上是PreferenceActivity的xml描述,那么在程序中我们只需要新建一个继承自PreferenceActivity的Activity,然后在主程序中调用就可以了。这个PreferenceActivity中的设置存储是完全自动的,你不需要再用代码去实现设置的存储,PreferenceActivity创建后会自动创建一个配置文件/data/data/you_package_name/shared_prefs/you_package_name_you_xml_name.xml。上例中自动生成的配置文件如下:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="EditTextPreference">12332312</string>
<string name="ListPreference">2</string>
<string name="RingtonePreference">content://settings/system/ringtone</string>
<boolean name="CheckBox1" value="true" />
<boolean name="CheckBox2" value="true" />
</map>
要取得其中的值可以通过如下的方法:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
value = prefs.getString("ListPreference", "unset");