[英]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
。
使用onSaveInstanceState
和onRestoreInstanceState
,请参见下面的完整代码:-
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
}
您可以在这里阅读更多内容。
希望这有所帮助
使用SharedPreferences或SQLiteDatabase来存储复选框的值,并且可以从Database
或SharedPreference
获取之后使用它。
如果使用onSaveInstanceState
& onRestoreInstanceState
则当用户关闭应用程序且该应用程序不再位于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.