我有一个PreferenceFragment
用于更改几个不同项目的相同设置。显然,不同的项目需要使用不同的键存储偏好值。所以我在创建片段后更改了所有首选项的键。
首选项通常由 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”的值
如何强制首选项重新加载新键的值并显示它们?