在PreferenceActivity中添加自定义设置项,你需要遵循以下步骤:
res/xml/目录下。例如,你可以创建一个名为preferences.xml的文件。在这个文件中,使用<Preference>元素定义你的设置项。例如:<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <ListPreference android:key="list_preference" android:title="List Preference" android:entries="@array/list_entries" android:entryValues="@array/list_entry_values" /> </PreferenceScreen> 这里,我们定义了一个ListPreference,它有两个数组资源:list_entries和list_entry_values,分别用于显示选项列表和存储用户选择的值。
res/values/arrays.xml文件中,定义这两个数组资源。例如:<resources> <!-- 其他数组资源 --> <string-array name="list_entries"> <item>Option 1</item> <item>Option 2</item> <item>Option 3</item> </string-array> <string-array name="list_entry_values"> <item>1</item> <item>2</item> <item>3</item> </string-array> </resources> PreferenceActivity中,加载并显示这个自定义设置项。例如:public class SettingsActivity extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); } } onResume()和onPause()方法,并在其中注册和注销SharedPreferences.OnSharedPreferenceChangeListener。例如:public class SettingsActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); } @Override protected void onResume() { super.onResume(); getPreferenceScreen().getSharedPreferences() .registerOnSharedPreferenceChangeListener(this); } @Override protected void onPause() { super.onPause(); getPreferenceScreen().getSharedPreferences() .unregisterOnSharedPreferenceChangeListener(this); } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (key.equals("list_preference")) { // 处理用户选择的值 } } } 现在,当用户更改设置项时,onSharedPreferenceChanged()方法将被调用,你可以在这里执行相应的操作。