用户退出应用程序时如何保存 Android CheckBox 的状态?
Posted
技术标签:
【中文标题】用户退出应用程序时如何保存 Android CheckBox 的状态?【英文标题】:How to save the state of an Android CheckBox when the users exits the application? 【发布时间】:2011-08-07 06:20:40 【问题描述】:有什么方法可以在用户退出应用程序时保存复选框的状态(选中或未选中),以便在应用程序重新启动时重新加载此状态?
@Override
public void onPause()
super.onPause();
save(itemChecked);
@Override
public void onResume()
super.onResume();
checkOld = load();
for (int i = 0 ; i < checkOld.length; i++)
notes.ctv.get(i).setChecked(checkOld[i]);
@Override
public void onRestart()
super.onResume();
checkOld = load();
for (int i = 0 ; i < checkOld.length; i++)
notes.ctv.get(i).setChecked(checkOld[i]);
private void save(final boolean[] isChecked)
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
insertState();
for(Integer i = 0; i < isChecked.length; i++)
editor.putBoolean(i.toString(), isChecked[i]);
editor.commit();
private boolean[] load()
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
boolean [] reChecked = new boolean[itemChecked.length];
for(Integer i = 0; i < itemChecked.length; i++)
reChecked[i] = sharedPreferences.getBoolean(i.toString(), false);
return reChecked;
【问题讨论】:
【参考方案1】:组合 onPause()
和 onResume()
以保存和加载您的 CheckBox
值。
示例代码:
@Override
public void onPause()
super.onPause();
save(mCheckBox.isChecked());
@Override
public void onResume()
super.onResume();
mCheckBox.setChecked(load());
private void save(final boolean isChecked)
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("check", isChecked);
editor.commit();
private boolean load()
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
return sharedPreferences.getBoolean("check", false);
【讨论】:
@Viktor 我选择了您的解决方案,但正如您所见,我提到了 CheckBoxes,所以我稍微更改了您的代码以使其适应布尔数组,但尽管我检查了一些,但我仍然没有选中所有复选框在关闭应用程序之前。知道为什么吗?我什至尝试将 onResume 代码放在 onRestart 函数中,但它仍然无法正常工作。请帮忙。 @Viktor 完成。现在请检查我在哪里做错了。 .我也添加了我的适配器的代码,所以你可以很容易地理解我的工作。在上面的代码注释中是我的适配器的一个实例。我还有一个问题我需要在我的 onCreate 函数中执行一些额外的操作,比如检查是否有任何 SharedPreference 然后加载它或类似的东西 @Varundroid:onResume()
在onCreated()
之后调用,因此不需要签入onCreate()
。我在您的代码中可以看到,您正在正确加载和保存。你确定你的CheckBox
es 的 id 是正确的吗?
@Viktor 是的,我希望如此,因为这是我在布尔数组中存储值的方式:- public boolean[] insertState() int size = notes.getCount(); for(int i = 0; i
【参考方案2】:
我相信 google notepad3 教程解释了保存和恢复状态http://developer.android.com/resources/tutorials/notepad/notepad-ex3.html
在 onSaveInstanceState() 中保存状态包,然后在 onStart() 中获取该包
希望有帮助
编辑:也检查这个,它更简洁。 onSaveInstanceState () and onRestoreInstanceState ()
【讨论】:
以上是关于用户退出应用程序时如何保存 Android CheckBox 的状态?的主要内容,如果未能解决你的问题,请参考以下文章