2

ナビゲーションビューのレイアウトがあります。ビュー階層は、以下に説明するAndroid NavigationView onDestroyが呼び出されていません

ナビゲーションビュー> A> A1
ナビゲーションビュー> B今、私は断片BまたはフラグメントAは、メニューをクリックして開くと、私は断片A1にいる間、

ナビゲーションビューでは、フラグメントA1でonStopまたはonDestroyViewは呼び出されません。

フラグメントA1にgreen-botイベントを登録しました。これは、onStopが呼び出されないため、イベントは決して登録解除されません。だから私が再びA1に戻ったときに新しいイベントを登録していて、すべてのイベントを2回取得しています。

どうすればこの問題を解決できますか?

ありがとう

+0

アクティビティステートマシンをチェックしてください:https://developer.android.com/reference/android/app/Activity.html –

答えて

0

onStop()は常に呼び出されるとは限りません。 onPause()メソッドでイベントを登録解除します。

1

onAttachおよびonDetachの方法は、Fragmentとなります。これらのメソッドは、ホストアクティビティでフラグメントが追加、削除、または置換されたときに呼び出されます。

あなたがonDestoryまたはOnDetechで EventBus.unregisterを(呼び出すことを忘れて
@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

あなたはonDestroyとしてonAttachonDetachを使用することができるアクティビティが破棄されたとき(実行)と呼ばれています。だから、アクティビティが破棄されたとき、onDestroyactivityfragmentのコードが実行されます。

@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(); 
    } 
関連する問題