Java Android在退出应用程序时保存复选框的状态

Java Android在退出应用程序时保存复选框的状态,java,android,checkbox,Java,Android,Checkbox,我有5个复选框,当它们被单击时,它们会使用onCheckedChangeListener将抽象类中的布尔值设置为true或false。例如: checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener(){ @Override public void onCheckedChanged(CompoundButton buttonView,boolean isChecked)

我有5个复选框,当它们被单击时,它们会使用onCheckedChangeListener将抽象类中的布尔值设置为true或false。例如:

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。