我想了解它是如何可能的。我遇到了偶爾發生的崩潰。這裏是堆棧跟蹤:後退按鈕在活動銷燬後被處理
java.lang.NullPointerException: Attempt to invoke interface method 'com.mycompany.myapp.fragments.timeline.TimelineFragmentView com.mycompany.myapp.injections.FragmentComponent.createTimelineFragmentView()' on a null object reference
at com.mycompany.myapp.fragments.timeline.TimelineFragment.createView(TimelineFragment.java:28)
at com.mycompany.myapp.fragments.timeline.TimelineFragment.createView(TimelineFragment.java:17)
at com.mycompany.myapp.fragments.BaseFragment.onCreateView(BaseFragment.java:33)
at com.mycompany.myapp.fragments.ScreenFlowBaseMenuFragment.onCreateView(ScreenFlowBaseMenuFragment.java:22)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248)
at android.support.v4.app.BackStackRecord.popFromBackStack(BackStackRecord.java:958)
at android.support.v4.app.FragmentManagerImpl.popBackStackState(FragmentManager.java:1666)
at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:586)
at android.support.v4.app.FragmentActivity.onBackPressed(FragmentActivity.java:169)
at com.mycomany.mayapp.MainActivity.onBackPressed(MainActivity.java:125)
at android.app.Activity.onKeyUp(Activity.java:2483)
at android.view.KeyEvent.dispatch(KeyEvent.java:2664)
at android.app.Activity.dispatchKeyEvent(Activity.java:2736)
at android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:50)
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.dispatchKeyEvent(AppCompatDelegateImplBase.java:224)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
而且FragmentComponent
在未來方法的最後一行零化:
@Override
protected void onDestroy() {
super.onDestroy();
backendResponseMonitor.stop();
view.stop();
Graph graph = (Graph) getApplication();
graph.destroyFragmentComponent();
}
既然一切在UI線程上運行那麼它看起來像後退按鈕處理活動onDestroy
後進行調用。我是否缺少活動生命週期的一些概念?
不保留活動開發人員選項標誌被打開
嘗試將'super.onDestroy()'移動到方法中的最後一個語句。 – JafarKhQ
謝謝!墜機的原因是什麼?如何移動超級通話將有助於崩潰? –
'super.onDestroy();'將清理'Activity'。檢查這個答案http://stackoverflow.com/questions/9625920/should-the-call-to-the-superclass-method-be-the-first-statement/9626268#9626268 – JafarKhQ