0

您好,我正在编写一个具有两个首选项复选框和首选项列表的 Android 应用程序。当复选框被标记为选中时,首选项列表将启用。我已经设法使用putBoolean()方法保存复选框“已检查”状态。

getPreferenceManager().getSharedPreferences().edit().putBoolean(key, boolean);
getPreferenceManager().getSharedPreferences().edit().commit();

但是如何保存该isEnabled值,以便在我离开和返回时它不会重置?

以及 putboolean 如何知道设置布尔值的属性是什么?

@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);

} 
4

2 回答 2

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);
于 2012-10-17T13:21:35.363 回答
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();
于 2012-10-18T16:07:13.423 回答