在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()
方法將被調用,你可以在這里執行相應的操作。