我在我的应用程序中有一些复选框(它们没有做任何事情只是勾选它)我如何保存这样,所以当用户离开应用程序时,它将保存选中的复选框?
当我按下主页按钮时,它会在我返回应用程序时保持选中复选框。但是当我退出应用程序时(使用后退键),它不会保存选中的复选框。
这是我的代码:
private CheckBox ch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ch = (CheckBox) findViewById(R.id.checkBox1);
ch.setOnClickListener(new View.OnClickListener() {
private String PREFRENCES_NAME;
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(ch.isChecked())
{
SharedPreferences settings = getSharedPreferences(PREFRENCES_NAME, 0);
ch.setChecked(settings.getBoolean("cbx1_ischecked" ,true));
settings.edit().putBoolean("check",false).commit();
Toast.makeText(getApplicationContext(), "Check", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(getApplicationContext(), "Uncheck", Toast.LENGTH_SHORT).show();
}}
});
}
有人可以帮助我吗?
答案 0 :(得分:0)
使用数据库存储复选框值,以便稍后将其用于“使用”
答案 1 :(得分:0)
我看到你试图使用sharedPreferences而且你几乎就在那里,让我告诉你一些你可以修改的基本例子:
// save boolean in sharedPreferences (this code goes in if(ch.isChecked()))
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("some_key", true); // here true is the value you want to save if the checkbox is checked
editor.commit();
// restore string in sharedPreferences (usually you have this onCreate method)
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
checkbox.setChecked(settings.getBoolean("some_key", "false"));
答案 2 :(得分:0)
您应该在onPause方法中执行此操作:
@Override
protected void onPause() {
super.onPause();
if(ch.isChecked())
{
SharedPreferences settings = getSharedPreferences(PREFRENCES_NAME, 0);
ch.setChecked(settings.getBoolean("cbx1_ischecked" ,true));
settings.edit().putBoolean("check",true).commit();
}
else
{
SharedPreferences settings = getSharedPreferences(PREFRENCES_NAME, 0);
ch.setChecked(settings.getBoolean("cbx1_ischecked" ,false));
settings.edit().putBoolean("check",false).commit();
}}
}
因此,每当活动被销毁或离开时,都会调用onPause方法并保存复选框的状态。
答案 3 :(得分:0)
您的代码仅保存状态,但您必须在活动恢复时重置它。您应该覆盖onResume函数并根据保存的设置设置复选框的状态。