這很奇怪。我有一個簡單的應用程序,一旦登錄就會在活動中顯示一個片段。該應用程序還有一個不活動的「超時」,在該時間結束該活動並顯示登錄屏幕 - 如果該應用程序在超時發生時處於後臺,則在完成活動中發生下一個onCreate
或onStart
事件。在完成onCreate中的活動時,我的片段的onCreateView在onCreate之前如何調用?
但有時當返回到登錄的活動中時,我在片段的onActivityCreated方法中得到一個NPE。該片段非常簡單,只需在String上調用方法即可。字符串本身通過調用getArguments()來檢索。我已經驗證過,每當創建Fragment時,參數總是被設置。
所以看起來onActivityCreated
實際上是在onCreate
之前在片段中調用的,我知道這應該是不可能的。下面是堆棧跟蹤的一部分:
01-14 15:34:37.176: E/AndroidRuntime(3272): at com.example.app.fragment.MyFragment.onActivityCreated(MyFragment.java:203)
01-14 15:34:37.176: E/AndroidRuntime(3272): at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1468)
01-14 15:34:37.176: E/AndroidRuntime(3272): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:931)
01-14 15:34:37.176: E/AndroidRuntime(3272): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
01-14 15:34:37.176: E/AndroidRuntime(3272): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1070)
01-14 15:34:37.176: E/AndroidRuntime(3272): at android.support.v4.app.FragmentManagerImpl.dispatchReallyStop(FragmentManager.java:1888)
01-14 15:34:37.176: E/AndroidRuntime(3272): at android.support.v4.app.FragmentActivity.onReallyStop(FragmentActivity.java:787)
01-14 15:34:37.176: E/AndroidRuntime(3272): at android.support.v4.app.FragmentActivity.doReallyStop(FragmentActivity.java:764)
01-14 15:34:37.176: E/AndroidRuntime(3272): at android.support.v4.app.FragmentActivity.onDestroy(FragmentActivity.java:322)
01-14 15:34:37.176: E/AndroidRuntime(3272): at com.actionbarsherlock.app.SherlockFragmentActivity.onDestroy(SherlockFragmentActivity.java:261)
01-14 15:34:37.176: E/AndroidRuntime(3272): at com.example.app.MyActivity.onDestroy(MyActivity.java:195)
01-14 15:34:37.176: E/AndroidRuntime(3272): at android.app.Activity.performDestroy(Activity.java:5273)
01-14 15:34:37.176: E/AndroidRuntime(3272): at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1110)
01-14 15:34:37.176: E/AndroidRuntime(3272): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3562)
你可以應該的源代碼? – wtsang02