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(); 
    }