2017-06-02 22 views
0

状況は次のとおりです フロー:アクティビティ - >フラグメント1 - >フラグメント2 - >フラグメント3 フラグメント1〜3が画面に表示されているときに戻るボタンをクリックすると、アクティビティがポップアップします。Onbackpressedで前のフラグメントを取得

onbackpressメソッドでどのフラグメントが以前のものだったのか知りたいのですが、このメソッドは呼び出されます。

コード(活動) public void setFragment(Fragment fragment) { if (!isFinishing()) { mFragmentManger.beginTransaction().replace(R.id.input_preference_contatiner, fragment).commit(); } } コード(断片1 2 3) @Override public void onClick(View v) { InputPreferenceActivity inputPreferenceActivity = (InputPreferenceActivity) getActivity(); inputPreferenceActivity.setFragment(new InputPreferenceStep1Fragment()); }

+0

あなたはフラグメントを追加したり、それらを交換していますか? –

+0

いくつかのコードを投稿してください – Raghunandan

+0

私が書いたコードを追加しました –

答えて

0

あなたがフラグメント間で移行している場合、あなたのFragmentTransactionの一部としてaddToBackStack()を呼び出す:

FragmentTransaction tx = fragmentManager.beginTransation(); 
tx.replace(R.id.fragment, new MyFragment()).addToBackStack("tag").commit(); 

あなたはより多くを必要とする場合詳細なコントロール(つまり、いくつかのフラグメントが表示されている場合、バックキーを押さないようにしたい場合)、フラグメントの親ビューにOnKeyListenerを設定することができます:

//You need to add the following line for this solution to work; thanks skayred 
fragment.getView().setFocusableInTouchMode(true); 
fragment.getView().requestFocus(); 
fragment.getView().setOnKeyListener(new OnKeyListener() 
{ 
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) 
    { 
     if(keyCode == KeyEvent.KEYCODE_BACK) 
     { 
      return true; 
     } 
     return false; 
    } 
}); 
0

断片でプット本規範あなたはフラグメントを変更

addToBackStack(ヌル)

フラグメント変化

  FragmentManager fragmentManager=getSupportFragmentManager(); 
     fragmentManager.beginTransaction().replace(R.id.container,fragment).addToBackStack(null).commit(); 
関連する問題