在Android中调用finish()时是否可以保存活动状态?

时间:2016-09-04 10:05:19

标签: java android android-activity onsaveinstancestate

我使用startActivityForResult从我的第一个活动切换到第二个活动。 在第二个活动中,有多个复选框供用户选择。我从第二个活动中得到结果并致电finish()

但是,如果用户改变主意并再次打开第二个活动,则会重新创建,并且将取消选中复选框。

我该如何避免?调用finish()时是否可以保存复选框的状态?

2 个答案:

答案 0 :(得分:0)

您致电finish(),让系统终止活动。不,你不能这样拯救国家。

我建议使用共享首选项api以密钥值对格式保留任何基本信息。

但你应该阅读https://developer.android.com/guide/topics/data/data-storage.html

或者https://developer.android.com/guide/topics/ui/settings.html

答案 1 :(得分:0)

保存复选框的最佳方式是使用SharedPreferences来声明它。在第二个活动方法中的onStop()中添加此代码以保存复选框状态:

SharedPreferences options = getSharedPreferences("options", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("checkboxState", checkbox.isChecked());
editor.commit();

这个代码在onStart()方法中用于加载复选框状态:

SharedPreferences options = getSharedPreferences("options", 0);
boolean checkboxState = options.getBoolean("checkboxState", false);
checkbox.setChecked(checkboxState);