我正在使用Android Studio创建一个简单的调查应用程序。我有多个意图,并且在按下“下一步”按钮时启动每个意图。我还有一个返回按钮,如果用户想更改问题的答案,则将其带回到上一个意图。当我再次前进时,没有一个答案被保存。如何使所有用户的答案都得以保留?
我正在使用Android Studio创建一个简单的调查应用程序。我有多个意图,并且在按下“下一步”按钮时启动每个意图。我还有一个返回按钮,如果用户想更改问题的答案,则将其带回到上一个意图。当我再次前进时,没有一个答案被保存。如何使所有用户的答案都得以保留?
您可以在活动中覆盖两种方法:
public void onSaveInstanceState(Bundle savedInstanceState);
public void onRestoreInstanceState(Bundle savedInstanceState);
正如您所看到的,您可以访问Bundle“savedInstanceState”。如果用户终止了一个活动,则会调用onSaveInstanceState(),您有可能保存要稍后恢复的数据。
方法onRestoreInstanceState()仅在您在onSaveInstanceState()中保存信息时才会被调用,并为您提供了恢复该数据的机会。它提供了一个包含与您在onSaveInstanceState()期间保存到数据中相同数据的bundle。
Bundle基本上是一个键值列表。例如,要存储字符串,只需调用bundle的putString()方法即可:
savedInstanceState.putString("myKey", "Hello World");
在Bundle中,有许多数据类型可以存储(通常,实现接口Parcelable的每个类都可以存储在Bundle中)。
更多信息:
http://developer.android.com/training/basics/activity-lifecycle/recreating.html http://developer.android.com/reference/android/os/Bundle.html
当您的活动被重新创建时,它们会收到回调onCreate(Bundle)。无论您在onSaveInstanceState(Bundle)中保存了什么都将出现在Bundle中。
onPause
回调方法中保存存储在字段中的数据。 - EpicPandaForce