在preferenceactivity中如何添加自定义设置项

avatar
作者
猴君
阅读量:0

在PreferenceActivity中添加自定义设置项,你需要遵循以下步骤:

  1. 创建一个新的XML文件,用于定义你的设置项。这个文件应该位于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_entrieslist_entry_values,分别用于显示选项列表和存储用户选择的值。

  1. 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> 
  1. 在你的PreferenceActivity中,加载并显示这个自定义设置项。例如:
public class SettingsActivity extends PreferenceActivity {      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         addPreferencesFromResource(R.xml.preferences);     } } 
  1. 为了处理用户的选择,你需要重写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()方法将被调用,你可以在这里执行相应的操作。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!