Android: onSaveInstanceState in Back button

妖精的绣舞 提交于 2019-12-04 04:00:51

问题


I am developing an application in which i am overriding the back button. I created a check box. On click of which i am calling intent for:

startActivityforResult();

And also maintaining the state of activity as :

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

which run fine and the state is maintained. Means i am entering value in edit text. and on check box click calling new activity for result and while return on first activity the state is maintain.

Now but from second activity if i click on device back button the state is not maintained.

So what should i do to maintain the state on back button. I searched but not found satisfied solution. Please suggest me.


回答1:


When You start the new Activity then the current Activity gets hidden and new Activity is placed on top of the stack. Now if you press the back button on the new Activity then the first activity should come up in its current state (If it wasn't destroyed, calling finish()) where it was left i.e. if the check box was checked then it should remain checked. You don't need to save the activity state unless the orientation is changed or the activity is destroyed.

Are you sure you are not doing any thing in the onActivityResult or onResume() method which effects the state of the check box? I would recommend to first comment out all the code in both the methods and see if your check box retains the state. Also can you also make sure that the code itself doesn't uncheck the checkbox before starting the new Activity?




回答2:


Now but from second activity if i click on device back button the state is not maintained.

onSaveInstanceState() is mostly used for configuration changes (e.g., rotating the screen).

So what should i do to maintain the state on back button

Most likely, there is no "state" that needs to be "maintained", outside of your data model. Your activity needs to update its data model: files, database, preferences, ContentProvider, some singleton that is your in-memory data model manager, whatever.



来源:https://stackoverflow.com/questions/15569790/android-onsaveinstancestate-in-back-button

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!