你好,我正在写一个Android应用程序,它有两个首选项,一个复选框和一个首选项列表。
如果复选框标记为已选中,则首选项列表将变为启用状态。
我已设法使用putBoolean()
方法保存复选框“已检查”状态。
getPreferenceManager().getSharedPreferences().edit().putBoolean(key, boolean);
getPreferenceManager().getSharedPreferences().edit().commit();
但是如何保存isEnabled
值,以便在我离开并返回时不会重置?
并且putboolean如何知道whice属性设置布尔值呢?
@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);
}
答案 0 :(得分:2)
启用状态的保存方式与保存“已检查”状态的方式相同,因为isEnabled()返回布尔值。
SharedPreferences.Editor prefEditor = PreferenceManager.getDefaultSharedPreferences(this).edit();
prefEditor.putBoolean("prefs.preferenceList.enabled", preferenceList.isEnabled());
prefEditor.commit();
然后返回要使用setEnabled()设置复选框的启用状态的状态。在onCreate期间,你可以做这样的事情。
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
preferenceList.setEnabled(prefs.getBoolean("prefs.preferenceList.enabled", false);
答案 1 :(得分:0)
getPreferenceManager().getSharedPreferences().edit().putBoolean(key, b);
getPreferenceManager().getSharedPreferences().edit().commit();
您不应再次调用edit(),因为每次调用edit时都会创建preferenceEditor的新实例。因此,你的putBoolean永远不会被提交。
这应该是
SharedPreferences.Editor prefs = getPreferenceManager()
.getSharedPreferences()
.edit();
prefs.putBoolean(key,b);
prefs.commit();