我的活动上有一个复选框。我想知道每次打开我的应用程序时如何使其状态保持不变(选中/取消选中)。
答案 0 :(得分:5)
即使应用程序已关闭,您也可以使用SharedPreferences来实现保留其状态的CheckBox。
这是一个示例代码,用于保存复选框状态,即使应用已关闭。
public class TestActivity extends Activity{
CheckBox checkBox = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
checkBox = (CheckBox) findViewById(R.id.my_check_box);
boolean isChecked = getBooleanFromPreferences("isChecked");
Log.i("start",""+isChecked);
checkBox.setChecked(isChecked);
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton view, boolean isChecked) {
Log.i("boolean",""+isChecked);
TestActivity.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;
}
}
<强> main.xml中强>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<CheckBox
android:id="@+id/my_check_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
答案 1 :(得分:1)
checkBox.setChecked(true);
如果您想要最后一个状态,只需将选中的状态写入onPause()
方法中的SharedPreferences
,然后使用onResume()
方法获取状态。
参考:http://developer.android.com/reference/android/widget/CheckBox.html http://developer.android.com/reference/android/content/SharedPreferences.html
答案 2 :(得分:1)
您最好的选择是在您的应用中实施SharedPreferences
并保存其状态。运行应用程序时,您可以从首选项中检索状态,然后选中/取消选中该复选框。
答案 3 :(得分:1)
为了记住应用程序状态,您需要使用onSaveInstanceState()
和onRestoreInstanceState()
方法(有关详细信息,请参阅此answer)以确定是否应检查该框或未经检查......
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putBoolean("IsCheckboxChecked", _myCheckbox.isChecked());
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
_myCheckbox.setChecked(savedInstanceState.getBoolean("IsCheckboxChecked"));
}
答案 4 :(得分:0)
这是一篇类似的帖子.. SO Qn您可以从那里使用相同的想法。希望这会有所帮助。
答案 5 :(得分:0)
您最好的选择是使用SharedPreference。您可以像这样使用它:
将当前状态保存到共享首选项:
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit(); //opens the editor
editor.putBoolean("isChecked", true); //true or false
editor.commit(); //saves it in shared preference
然后当您的活动开始时,您可以检查SharedPreference中的值,如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.yourlayout);
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
CheckBox checkBox = (CheckBox) findViewById(R.id.checkbox_id);
checkBox.setChecked(sharedPreferences.getBoolean("isChecked", false));
}
希望您可以使用此信息