安卓:在的onSaveInstanceState后退按钮(Android: onSaveInstan

2019-07-22 15:35发布

我正在开发中,我正在重写后退按钮的应用程序。 我创建了一个复选框。 在点击其中我打电话的意图为:

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");
}

其运行正常并且状态被维持。 意味着我在编辑文本输入值。 和复选框,单击呼唤新的活动结果,并同时在第一项活动回报的状态保持。

现在,但是从第二个活动,如果我点击设备后退按钮不能保持状态。

所以我应该做的,以保持后退按钮的状态。 我搜查,但没有找到满意的解决方案。 请给我建议。

Answer 1:

当你开始新的活动,那么当前活动被隐藏,并且新的活动被放置在堆栈的顶部。 现在,如果你按新的活动后退按钮,则第一个活动应该拿出其当前状态(如果它不被破坏,呼吁结束()),其中有人离开也就是说,如果被选中复选框,那么它应该保持检查。 你并不需要保存的活动状态,除非方向改变或活动被破坏。

你确定你没有做任何事情,其中​​效果的复选框的状态onActivityResult或的onResume()方法? 我会建议先注释掉所有代码在这两种方法,看看你的复选框保持状态。 也可以还确保代码本身不启动新的活动之前取消选中该复选框?



Answer 2:

现在,但是从第二个活动,如果我点击设备后退按钮不能保持状态。

onSaveInstanceState()主要用于配置改变(例如,旋转的屏幕)。

所以我应该做的,以保持后退按钮状态

最有可能的,没有“国家”需要进行“维护”,你的数据模型之外。 您的活动需要更新其数据模型:文件,数据库,喜好, ContentProvider ,一些单身那是你的内存数据模型管理器,等等。



文章来源: Android: onSaveInstanceState in Back button