如何在android偏好中保存启用状态

时间:2012-10-17 13:11:08

标签: android sharedpreferences preferences

你好,我正在写一个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);

} 

2 个答案:

答案 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();