你好,我写了一个Android应用程序,它有两个首选项,一个复选框和一个首选项列表。当复选框标记为选中时,首选项列表将变为启用状态。我已经设法使用putBoolean()
方法保存复选框"已选中"状态。
getPreferenceManager().getSharedPreferences().edit().putBoolean(key, boolean);
getPreferenceManager().getSharedPreferences().edit().commit();
但是如何保存isEnabled
值,以便在我离开和返回时它不会重置?
普特布尔人怎么知道要设置布尔值呢?
@Override
public void onPause() {
super.onPause();
save(l.isEnabled());
}
@Override
public void onResume() {
super.onResume();
l.setEnabled(load());
}
private void save(final boolean b) {
//what to put instead of key in order to save the preference list ENABLED sate??
getPreferenceManager().getSharedPreferences().edit().putBoolean(key, b);
getPreferenceManager().getSharedPreferences().edit().commit();
}
private boolean load(String key) {
return getPreferenceManager().getSharedPreferences().getBoolean(key, false);
}
启用状态的保存方式可以与保存"已检查"状态的方式相同,因为 isEnabled() 返回布尔值。
SharedPreferences.Editor prefEditor = PreferenceManager.getDefaultSharedPreferences(this).edit();
prefEditor.putBoolean("prefs.preferenceList.enabled", preferenceList.isEnabled());
prefEditor.commit();
然后返回要返回状态,请使用 setEnabled() 设置复选框的启用状态。在创建期间,您可以执行类似操作。
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
preferenceList.setEnabled(prefs.getBoolean("prefs.preferenceList.enabled", false);
getPreferenceManager().getSharedPreferences().edit().putBoolean(key, b);
getPreferenceManager().getSharedPreferences().edit().commit();
您不应该再次调用 edit(),因为每次调用 edit 时,它都会创建 ppreferencesEditor 的新实例。因此,您的 putBoolean 永远不会被提交。
这应该是
SharedPreferences.Editor prefs = getPreferenceManager()
.getSharedPreferences()
.edit();
prefs.putBoolean(key,b);
prefs.commit();