我有一個PreferenceFragment
這是用來改變幾個不同的項目相同的設置。顯然,不同的項目需要使用不同的密鑰存儲首選項值。所以我在創建片段後更改所有首選項的關鍵。Android:如何在更改密鑰後刷新顯示的首選項?
首由XML定義和往常一樣:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:key="_key_one"
android:title="Title of first preference" />
[... and more Preferences]
</PreferenceScreen>
的PreferenceFragment,我改變鍵:
public class ItemSettingPreferenceFragment extends PreferenceFragment {
private String mItemKey;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mItemKey = getArguments().getString('item_key'); //this will contain name of item
addPreferencesFromResource(R.xml.item_settings_preferences);
for (int i=0; i< getPreferenceScreen().getPreferenceCount(); i++){
final Preference pref = getPreferenceScreen().getPreference(i);
pref.setKey(mItemKey + pref.getKey());
}
}
}
現在所有的偏好對每一個項目的唯一關鍵,如 「item1_key_one」
不幸的是,在創建之後,這些首選項加載並用原始鍵「_key_one」顯示值
如何強制首選項重新加載新密鑰的值並顯示這些值?
謝謝,我希望避免這種情況,因爲我希望項目結構清晰,即在相同的地方都有明確的偏好。此外,我使用一些自創的首選項,這些首選項僅用於XML - 它們的屬性沒有任何Setters - 看起來我必須擴展它們: - / – Jantlem