Java Android在退出应用程序时保存复选框的状态
我有5个复选框,当它们被单击时,它们会使用onCheckedChangeListener将抽象类中的布尔值设置为true或false。例如:Java Android在退出应用程序时保存复选框的状态,java,android,checkbox,Java,Android,Checkbox,我有5个复选框,当它们被单击时,它们会使用onCheckedChangeListener将抽象类中的布尔值设置为true或false。例如: checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener(){ @Override public void onCheckedChanged(CompoundButton buttonView,boolean isChecked)
checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked)
{
if(isChecked)
{
CheckboxData.checked = true;
}
else if(!isChecked)
{
CheckboxData.checked = false;
}
}
});
然而,当我离开应用程序并返回时,复选框不再被单击,但布尔值仍然为真。如何使应用程序记住已单击复选框。?我应该在创建时检查主活动中的布尔值,然后将复选框设置为选中或不选中,还是有更好/更快的方法让应用程序记住复选框状态
刚刚在主要活动onCreate方法中添加了以下内容:
if(CheckboxData.checked)
{
CheckBox checkbox = (CheckBox) findViewById(R.id.checkbox);
checkbox.setChecked(true);
}
但是当
活动
获取销毁
时,它什么也不做如果为true,请检查复选框状态,并在共享首选项中添加复选框状态
@Override
public void onDestroy() {
if(CheckboxData.checked){
SharedPreferences prefs = getSharedPreferences("private preference", Context.MODE_PRIVATE);
prefs.edit()
.putBoolean("CheckboxData",true)
.commit();
}
super. onDestroy();
}
当Activity
重新启动时,在onCreate
中检查首选项中的复选框状态,如果为true,则启用复选框
SharedPreferences prefs = getSharedPreferences("private preference", Context.MODE_PRIVATE);
boolean isChecked = prefs.getBoolean("CheckboxData",false);
if(isChecked)
checkBoxView.setChecked(true)
您需要在onCreate()中调用setChecked(您的布尔值)。每次打开应用程序时调用的主活动是否为onCreate?是。。有关android生命周期的更多信息,请参阅以下链接。使用SharedRef保存复选框状态而不是使用抽象类会更好。谢谢,但我如何确保onCheckedChangeListener只添加一次,我假设,当我再次打开活动时,它会添加另一个侦听器,从而生成两个?当活动被销毁时,侦听器将被取消。所以别担心。它只有一个instance@Libin-根据活动生命周期说明,可能不会调用onDestroy;仅保证蜂巢前的
onPause
;最近的onStop
是有保证的。请参见后面的表中标记为可终止的方法。允许系统在可终止方法之后终止应用程序,而不调用生命周期中的其余方法。最值得注意的是,可能达不到onDestroy。