我正在开发一个应用程序,我在其中覆盖了后退按钮。我创建了一个复选框。点击我正在调用的意图:
startActivityforResult();
并且还将活动状态保持为:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putBoolean("checkbox", checkbox.isChecked());
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
checkbox_state = savedInstanceState.getBoolean("checkbox");
}
运行良好,状态得以维持。 意味着我在编辑文本中输入值。并在复选框上单击调用结果的新活动,并在第一个活动返回时保持状态。
现在,但是从第二个活动开始,如果我点击设备返回按钮,则不会保持状态。
那么我该怎样做才能维持后退按钮上的状态。我搜索但没有找到满意的解决方案。请建议我。
答案 0 :(得分:1)
当您启动新的Activity时,当前的Activity被隐藏,新的Activity被放置在堆栈的顶部。现在,如果你按下新活动上的后退按钮,那么第一个活动应该处于当前状态(如果它没有被销毁,调用finish())它离开的地方,即如果选中复选框则应该保留检查。除非更改方向或销毁活动,否则无需保存活动状态。
你确定你没有在onActivityResult或onResume()方法中做任何影响复选框状态的事情吗?我建议首先注释掉这两种方法中的所有代码,看看你的复选框是否保留了状态。您还可以确保在开始新活动之前代码本身没有取消选中复选框吗?
答案 1 :(得分:0)
现在,但是从第二个活动开始,如果我点击设备返回按钮,则不会保持状态。
onSaveInstanceState()
主要用于配置更改(例如,旋转屏幕)。
那么我应该怎样做才能维持后退按钮上的状态
最有可能的是,除了数据模型之外,没有“状态”需要“维护”。您的活动需要更新其数据模型:文件,数据库,首选项,ContentProvider
,一些作为内存数据模型管理器的单例,无论如何。