Android当我的应用程序切换方向2次以上时我得到nullPointerException

时间:2012-11-11 00:33:38

标签: android

在我的应用程序中有1个活动(活动A)和3个碎片(Frag B,Frag C,Frag D)。该过程进行活动A - > Frag B - > Frag C - > Frag D.我的应用程序可以进行屏幕方向,但是当我在Frag D或Frag C上时,我做1个屏幕方向改变它的罚款,应用程序仍然有效。当我进行2+屏幕方向更改时,我的savedInstanceState和我在Activity A中保存的所有内容都变为null,我得到一个nullPointerException,所以当我点击“返回”转到上一个片段时,应用程序崩溃了。

我无法确切地指出为什么会发生这种情况,但希望有人可能知道为什么会发生这种情况,我认为如果1个屏幕方向有效,那么为什么第二个会这样做呢?如果我从风景或肖像开始并没有关系,但它恰好发生2+方向变化。

,我不太确定在这里放什么代码

EDIT。 logcat的:

11-12 20:44:46.637: I/Activity A(998): onStart
11-12 20:44:46.637: I/Activity A(998): onResume
11-12 20:46:18.947: I/Frag B(998): onCreateView
11-12 20:46:19.157: I/Frag B(998): onStart
11-12 20:46:19.157: I/Frag B(998): onResume
11-12 20:46:23.057: I/Frag B(998): onPause
11-12 20:46:23.067: I/Frag B(998): onStop
11-12 20:46:23.067: I/Frag C(998): onCreateView
11-12 20:46:23.327: I/Frag C(998): onStart
11-12 20:46:23.327: I/Frag C(998): onResume
11-12 20:46:25.507: I/Frag C(998): onPause
11-12 20:46:25.507: I/Frag C(998): onStop
11-12 20:46:25.527: I/Frag D(998): onCreateView
11-12 20:46:29.466: I/Frag D(998): onStart
11-12 20:46:29.466: I/Frag D(998): onResume

//First screen rotation.

11-12 20:46:52.907: I/Frag D(998): onPause
11-12 20:46:52.907: I/Activity A(998): onPause
11-12 20:46:52.907: I/System.out(998): savedInstanceState in Frag C = Bundle[{LibraryChoice=Fighter}]
11-12 20:46:52.907: I/System.out(998): savedInstanceState in Frag D = Bundle[{LibraryChoice=Fighter, LibraryChoiceSelected=FighterSelected}]
11-12 20:46:52.947: I/Frag D(998): onStop
11-12 20:46:52.947: I/Activity A(998): onStop
11-12 20:46:52.957: I/Frag B(998): onDestroy
11-12 20:46:52.957: I/Frag C(998): onDestroy
11-12 20:46:53.037: I/Frag D(998): onDestroy
11-12 20:46:53.037: I/Activity A(998): onDestroy
11-12 20:46:53.667: I/Frag D(998): onCreateView
11-12 20:46:57.127: I/Frag D(998): onStart
11-12 20:46:57.127: I/Activity A(998): onStart
11-12 20:46:57.147: I/Activity A(998): onResume
11-12 20:46:57.147: I/Frag D(998): onResume

//Second screen rotation.

11-12 20:47:05.697: I/Frag D(998): onPause
11-12 20:47:05.697: I/Activity A(998): onPause
11-12 20:47:05.697: I/System.out(998): savedInstanceState in Frag C = Bundle[{LibraryChoice=null}]
11-12 20:47:05.697: I/System.out(998): savedInstanceState in Frag D = Bundle[{LibraryChoice=Fighter, LibraryChoiceSelected=FighterSelected}]
11-12 20:47:05.737: I/Frag D(998): onStop
11-12 20:47:05.737: I/Activity A(998): onStop
11-12 20:47:05.747: I/Frag B(998): onDestroy
11-12 20:47:05.747: I/Frag C(998): onDestroy
11-12 20:47:05.867: I/Frag D(998): onDestroy
11-12 20:47:05.867: I/Activity A(998): onDestroy
11-12 20:47:06.457: I/Frag D(998): onCreateView
11-12 20:47:09.907: I/Frag D(998): onStart
11-12 20:47:09.907: I/Activity A(998): onStart
11-12 20:47:09.917: I/Activity A(998): onResume
11-12 20:47:09.917: I/Frag D(998): onResume

//Back button pressed.

11-12 20:47:19.696: I/Frag D(998): onPause
11-12 20:47:19.696: I/Frag D(998): onStop
11-12 20:47:19.707: I/Frag C(998): onCreateView
11-12 20:47:19.977: D/AndroidRuntime(998): Shutting down VM
11-12 20:47:20.017: E/AndroidRuntime(998): FATAL EXCEPTION: main
11-12 20:47:20.017: E/AndroidRuntime(998): java.lang.NullPointerException
11-12 20:47:20.017: E/AndroidRuntime(998): at j.l.ls11.FragB.onCreateView(FragB.java:99)

任何人都知道如何让我的Frag C不为空?

1 个答案:

答案 0 :(得分:0)

我需要做的是让片段双向沟通。我只是将其作为B-> C-> D并且不具有D-> C-> B.一旦我让他们传递信息,它的工作方式。 :)