我使用了onCheckedChanged方法来处理复选框。当我点击时它运行良好。离开或关闭应用程序后,当我重新打开它时,复选框状态保持禁用状态。我希望我的复选框状态为我点击(选中/取消选中)即使在关闭应用程序并重新打开它之后。我尝试使用此处发布的共享偏好来实现它。但是因为我没有清除它,所以我不能。
viewHolder.checkbox
.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
Model element = (Model) viewHolder.checkbox
.getTag();
element.setSelected(buttonView.isChecked());
Interactivearrayadapter.this.putBooleanInPreferences(isChecked,"isChecked");
}
});
}
public void putBooleanInPreferences(boolean isChecked,String key){
SharedPreferences sharedPreferences = this.getPreferences(Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(key, isChecked);
editor.commit();
}
public boolean getBooleanFromPreferences(String key){
SharedPreferences sharedPreferences = this.getPreferences(Activity.MODE_PRIVATE);
Boolean isChecked = sharedPreferences.getBoolean(key, false);
return isChecked;
我在Interactivearrayadapter类中使用了这段代码,因为我在列表中显示了复选框。在getpreference(字符串)中显示的错误不支持此类。
答案 0 :(得分:2)
将您的复选框ischecked()
标记存储在sharedpreferences
中,并获取该标记,并在下次启动应用时显示。
答案 1 :(得分:0)
对每个复选框使用首选项。如果显示活动,请阅读首选项并选中或取消选中该复选框(例如,在onResume()中)。为每个复选框注册一个OnClickListener,如果单击该复选框,则修改首选项值。 我在这里写了关于如何在字符串中使用共享首选项的简短说明:https://stackoverflow.com/a/9238997/1127492 如果字符串很简单,则修改布尔值的示例。