使用Android首选项屏幕的MultiSelectListPreference
我正在使用Android ICS SDK,我想做一个使用MultiSelectListPreference的首选项屏幕(适用于API级别11&+) 我只想保留SharedPref中的值,刷新MultiSelectListPreference的摘要并刷新对话框列表 这是我的密码:使用Android首选项屏幕的MultiSelectListPreference,android,Android,我正在使用Android ICS SDK,我想做一个使用MultiSelectListPreference的首选项屏幕(适用于API级别11&+) 我只想保留SharedPref中的值,刷新MultiSelectListPreference的摘要并刷新对话框列表 这是我的密码: Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPref
Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.newgame);
mMultiCharacters.setOnPreferenceChangeListener(this);
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor settingsEditor = settings.edit();
settingsEditor.putStringSet( preference.getKey() , (Set<String>) newValue);
settingsEditor.commit();
//display new summary
initChar();
return false;
}
覆盖
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.newgame);
mMultiCharacters.setOnPreferenceChangeListener(此);
}
@凌驾
公共布尔onPreferenceChange(首选项首选项,对象newValue){
SharedReferences设置=PreferenceManager.GetDefaultSharedReferences(此);
SharedReferences.Editor设置编辑器=设置。编辑();
settingsEditor.putStringSet(preference.getKey(),(Set)newValue);
settingsEditor.commit();
//显示新摘要
initChar();
返回false;
}
XML部分:
<MultiSelectListPreference
android:entries="@array/characterNames"
android:entryValues="@array/characterNames"
android:key="pref_characters"
android:persistent="true"
android:title="Chars :" />
这种行为很奇怪。对话框列表没有刷新…一些想法?谢谢!好吧..我用过一次
MultiSelectListPreference
,下面是我的“想法”
您在onPreferenceChange
侦听器中返回false
,我认为它不仅没有提交更改,还可能恢复到以前的值。我知道您是通过settingsEditor
提交更改的,但可能是false
返回的是恢复旧值,所以我建议返回true
还有一件事,newValue
对象实际上是一个HashSet
,它包含新选择的值,因此您可以使用它做任何您想做的事情,但如果返回true,则不必使用它提交更改。
祝你好运