繁体   English   中英

如何在整个活动中维护CheckBox状态

[英]How to maintain CheckBox state across the activities

如何在整个活动中maintain CheckBox state

我在FirstActivity.java选中了一个CheckBox,但是当我从其他任何活动move back FirstActivity.java时 ,例如从SecondActivity.java说。

然后,我not getting my CheckBox as check我之前检查过的not getting my CheckBox as check

使用onSaveInstanceStateonRestoreInstanceState ,请参见下面的完整代码:-

public class FirstActivity extends Activity {

    CheckBox cb1;
    Button btnNext;
    private boolean boolCheck1 = false;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        cb_cb1 = (CheckBox) findViewById(R.id.cb1);

        btnNext = (Button) findViewById(R.id.btnNext);

        // control status of body frame checkboxes
        cb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

           @Override
           public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // TODO Auto-generated method stub
                if(isChecked){

                }
            }
        });

        btnNext.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                    Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
                    startActivity(intent);
            }
        });
    }

    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
       super.onSaveInstanceState(savedInstanceState);
       savedInstanceState.putBoolean("Enable", cb1.isChecked());      
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        boolCheck1 = savedInstanceState.getBoolean("Enable");
    }
}

最好的选择是使用sharedPreferences

checkbox所在的活动中,在onCreate()放入以下内容:

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); // 0 - for private mode
Editor editor = pref.edit();

然后,在你intent去另一个活动,或“保存” button ,或任何你想要的,使用以下命令:

editor.putBoolean("checkbox", yourCheckbox.isChecked()); 
editor.commit(); // commit changes

现在,设置被保存。

回到您的活动之后,在onCreate使用它:

if (pref.getBoolean("checkbox", false) == true){ //false is default value
yourCheckbox.setChecked(true); //it was checked
} else{
yourCheckbox.setChecked(false); //it was NOT checked
}

您可以在这里阅读更多内容。

希望这有所帮助

使用SharedPreferencesSQLiteDatabase来存储复选框的值,并且可以从DatabaseSharedPreference获取之后使用它。

如果使用onSaveInstanceStateonRestoreInstanceState则当用户关闭应用程序且该应用程序不再位于Memory时,所有引用都将清除。

要维护各个活动的状态,您必须使用SharedPreferences或数据库。 在您的情况下, SharedPreferences是最佳选择

您已经使用过OnSavedInstance,它将仅保存实例,直到活动未销毁为止,即该活动保留在堆栈中。

检查活动生命周期,以了解有关活动何时被破坏的更多信息。

对于每个复选框,您可以将其值存储在sharedPreference中,并且在活动的onCreate()上,应根据sharedPreference值选中复选框

这是您使用共享偏好设置的方式

SharedPreferences prefs= context.getSharedPreferences("myPrefs", 0);
     SharedPreferences.Editor editor = prefs.edit();
        editor.putBoolean("checkbox1", true);//true if checked 
        editor.commit();
      // get stored value , if no value is stored then assume its false
     prefs.getBoolean("checkbox1", false);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM