2

我有一個導航視圖的佈局。視圖層次結構如下解釋,Android NavigationView onDestroy不叫

導航視圖> A> A1
導航視圖>乙

現在,而我在片段A1,如果我打開片段B或片段A通過點擊菜單在導航視圖中,onStop或onDestroyView不會在Fragment A1中調用。

我已經在片段A1中註冊了綠色機器人事件,現在因爲onStop未被調用,所以事件從未未註冊。所以當我再次回到A1時,它正在註冊一個新事件,並且我將所有事件都重複兩次。

我該如何解決這個問題?

謝謝

+0

查看活動狀態機:https://developer.android.com/reference/android/app/Activity.html –

回答

0

onStop()不保證總是被調用。在onPause()方法上取消註冊您的事件。

1

onAttachonDetachFragment的方法如何。當在主機活動中添加,刪除或替換片段時調用這些方法。

@Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 
     //register green-bot event here 
    } 

@Override 
    public void onDetach() { 
     //un-register green-bot here 
     super.onDetach(); 
    } 
0

你可能會忘記打電話給EventBus.unregister在onDestory或OnDetech()

0

您可以使用onAttachonDetachonDestroy被調用(執行)活動時被破壞。所以當活動被破壞時,activityfragmentonDestroy代碼被執行。

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 
    //register green-bot event here 
} 

@Override 
    public void onDetach() { 
     //un-register green-bot here 
     super.onDetach(); 
    }