2012-11-11 84 views
0

在我的應用程序中有1個活動(活動A)和3個碎片(碎片B,碎片C,碎片D)。這個過程是活動A - >碎片B - >碎片C - >碎片D.我的應用可以做屏幕方向,但是當我在碎片D或碎片C和我做1屏幕方向改變它的罰款和應用程序仍然工作。當我做2+屏幕方向更改我的savedInstanceState和我保存在我的活動A中的所有內容都變爲空,我得到一個nullPointerException,所以當我點擊「返回」去前一個片段的應用程序崩潰。Android當我的應用程序切換方向2+次我得到nullPointerException

我真的不能指責爲什麼發生這種情況,但希望有人可能有一個想法,爲什麼發生這種情況,我會認爲,如果1屏幕方向的作品,那麼爲什麼第二個這樣做呢?無論我是以橫向還是縱向開始,只是在2+方向發生變化時纔開始。我不太確定在沒有這麼長時間的情況下將代碼放在這裏。

編輯。 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) 

任何人都知道如何讓我的破片C規定不爲空?

+1

我希望SO有快速評論按鈕,例如一個做一個「請發佈您的logcat評論」。所以,請發佈您的logcat。假設某件事一旦起作用,它將再次起作用並不安全。靜態x = 1; y = 3; z = y/x; x = x-1; z = y/x; - 將在第二次通話中崩潰。 – Simon

+0

「我在活動A中保存的所有內容」是什麼意思?你是在談論活動對象中的數據,還是保存在實例狀態包中的數據? –

+0

@Simon增加了logcat,對於帖子的延遲抱歉。 –

回答

0

我需要做的就是讓這兩個片段進行雙向溝通。我只是將它作爲B-> C-> D,並沒有D-> C-> B。一旦我讓他們通過這種方式傳遞信息,它的工作。 :)

相關問題