我有一个片段活动。片段中的旋转器确定旋转器下方出现2个片段中的哪一个。这2个片段继承了一个抽象片段。在片段中,用户在字段中输入一些数据。我需要在屏幕旋转后恢复数据。如何使用onSaveInstanceState
?我不想保留碎片或其他东西。还原嵌套片段旋转
代码
- 在活动中我不做的旋转或节电状态相关的任何事情。我不覆盖
onSaveInstanceState
。 在片段与微调
@Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt(SPINNER_SELECTION, selectedPosition); outState.putParcelable(FIELDS, getFragmentManager() .saveFragmentInstanceState(getFragmentManager() .findFragmentById(R.id.container_with_fields))); }
在
onCreateView
我检查if (savedInstanceState == null)
和恢复领域。- 在内部碎片我什么都不做。
错误
目前onSaveInstanceState
方法被调用,但不是onCreateView
方法。介于两者之间,我得到以下错误,似乎什么都没有做我的代码:
07-03 10:33:06.079: W/dalvikvm(4286): threadid=1: thread exiting with uncaught exception (group=0x41e26700)
07-03 10:33:06.079: E/AndroidRuntime(4286): FATAL EXCEPTION: main
07-03 10:33:06.079: E/AndroidRuntime(4286): java.lang.NullPointerException
07-03 10:33:06.079: E/AndroidRuntime(4286): at android.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManager.java:1599)
07-03 10:33:06.079: E/AndroidRuntime(4286): at android.app.FragmentManagerImpl.saveAllState(FragmentManager.java:1655)
07-03 10:33:06.079: E/AndroidRuntime(4286): at android.app.Activity.onSaveInstanceState(Activity.java:1238)
07-03 10:33:06.079: E/AndroidRuntime(4286): at android.app.Activity.performSaveInstanceState(Activity.java:1186)
07-03 10:33:06.079: E/AndroidRuntime(4286): at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1240)
07-03 10:33:06.079: E/AndroidRuntime(4286): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3851)
07-03 10:33:06.079: E/AndroidRuntime(4286): at android.app.ActivityThread.access$800(ActivityThread.java:159)
07-03 10:33:06.079: E/AndroidRuntime(4286): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1322)
07-03 10:33:06.079: E/AndroidRuntime(4286): at android.os.Handler.dispatchMessage(Handler.java:99)
07-03 10:33:06.079: E/AndroidRuntime(4286): at android.os.Looper.loop(Looper.java:176)
07-03 10:33:06.079: E/AndroidRuntime(4286): at android.app.ActivityThread.main(ActivityThread.java:5419)
07-03 10:33:06.079: E/AndroidRuntime(4286): at java.lang.reflect.Method.invokeNative(Native Method)
07-03 10:33:06.079: E/AndroidRuntime(4286): at java.lang.reflect.Method.invoke(Method.java:525)
07-03 10:33:06.079: E/AndroidRuntime(4286): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
07-03 10:33:06.079: E/AndroidRuntime(4286): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
07-03 10:33:06.079: E/AndroidRuntime(4286): at dalvik.system.NativeStart.main(Native Method)
的应用程序不会崩溃,但活动似乎拿完。旋转后,屏幕很快冻结,并显示父活动。
我检查了我有最新的SDK和libs在项目中安装和使用。