2016-09-28 1 views
0

複数のフラグメントがあり、それらの間で切り替えることができます。バックスラックに行く前にフラグメント内のメソッドを実行する方法は私の問題です。 フラグメントのOnPause()またはOnStop()で何らかのメソッドを実行した場合、私のアクティビティはすべてのフラグメントで即座に終了します。 1つのフラグメントから別のフラグメントに切り替えるコードは次のとおりです。バックスラックの前にフラグメント内のメソッドを実行

public void switchFrgFromFrg(Fragment fragment, String tag, boolean isAddedToBackStack, int idContainer) { 
    FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); 
    fragmentTransaction.replace(idContainer, fragment, tag); 
    if (isAddedToBackStack) { 
     fragmentTransaction.addToBackStack(tag); 
    } 
    fragmentTransaction.commit(); 
    } 

助けが必要です。それはbackstack

に行く前にフラグメントが、私はいくつかを実行する場合は、

をしたいとあなたはできるだけ多くのメソッドを実行することができます表示されている場合は

答えて

1

あなたのフラグメントonResume()onPause()は、それを保持している活動onResume()またはonPause()が呼び出されたときにのみ呼び出されます。アクティビティと密接に結びついているので、断片が閉じているのです。あなたのonCreateView()でこれをCALとパラメータとして膨張ビューを渡します

private void doBackActionListener(View view){ 
    view.setFocusableInTouchMode(true); 
    view.requestFocus(); 

    view.setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if (event.getAction() == KeyEvent.ACTION_DOWN) { 
       if (keyCode == KeyEvent.KEYCODE_BACK) { 
        //execute code 

        //then do standart go back action 
        getActivity().onBackPressed(); 
        return true; 
       } 
      } 
      return false; 
     } 
    }); 
} 

:私はあなたTIのようにバックキーリスナーを実装sugest。

0

は、どのように私は、フラグメントでメソッドを実行することができますメソッドのフラグメントのOnPause()またはOnStop()私の活動はすべてのフラグメントで即座に終了しています。

あなたのコードにはExceptionが発生しているからです。あなたの質問にあなたのコンソール(ログメッセージ)を表示する方が良いです。

+0

Retrofit 2非同期呼び出しを実行しようとしていますが、例外なく実行されますが、私の活動は終了しています –

+0

問題を引き起こしているコード –

関連する問題