2017-05-01 6 views
0

私は多くの断片を持っています。例えば、A1、A2、A3、B1、B2、C1、C2、C3である。すべてのフラグメントはコンテナに入っていました。 現在のフラグメントがA1かB1かc1だったら、私はバックキーを押してプロジェクトが終了したと思った。 私はこの順序を前のものを隠して次のものを表示するようにしていましたが、それらはすべてaddToBackStackでした。私がFActivity.onBackPressed()を呼び出すと、popBackは以前のフラグメントを復元せず、confused.someフラグメントが見つからないと感じました。 C1はバックスタックにはありませんでした。彼らは逃した。アンドロイドの断片popBackStackの混乱

private void showFragment(FragmentTransaction ft1, Fragment fm1, Fragment fm2, String tag) { 
     if (fm1 != null) { 
      if (!fm1.isAdded()) { 
       ft1.add(R.id.information_detail, fm1).hide(fm1); 
      } else { 
       ft1.hide(fm1); 
      } 
       ft1.addToBackStack(tag); 
     } 
     if (!fm2.isAdded()) { 
      ft1.add(R.id.infomation_detail, fm2, tag); 
     } else { 
      ft1.show(fm2); 
     } 
     ft1.commit(); 
    } 

フラグメント制御

Fragment currentFragment ; 
    public void startFragmentOnParameter(Fragment oldFragment, String tag, String... param) { 

      FragmentTransaction ft1 = getFragmentManager().beginTransaction(); 
      switch (tag) { 
       case "A1": 
        A1= new A1(); 
        showFragment(ft1,oldFragment, A1, true, "A1"); 
        currentFragment = mPatientCaseInHistory; 
        break; 
       case "A2": 
        A2= new A2(); 
        showFragment(ft1, oldFragment, A2, false, "A2"); 
        currentFragment = mPatientWithArrear2; 
        break; 
       case "A3": 
        A3= new A3(); 
        showFragment(ft1, oldFragment, A3, false, "A3"); 
        currentFragment = mPatientsCases3; 
        break; 
       ...... 
} 

と私のコードで何が悪い

public void onBackPressed() { 

     String name = currentFragment.getClass().getSimpleName(); 
     if(name.equals("A1")||name.equals("B2")||name.equals("C1")){ 

      finish(); 
     }else{ 
      super.onBackPressed(); 
      currentFragment = (Fragment) getFragmentManager().findFragmentById(R.id.infomation_detail); 
     } 
    } 

をonBackPressed:ここ

は私の非表示&ショーのコードですか?

+0

を使用します。 –

+0

@AjinkyaS super.onBackPressed()を削除した場合、popBackStack()は機能しません。 –

答えて

0

はTRY)(super.onBackPressedを除去してみ

getFragmentManager().popBackStack(); 

代わり

super.onBackPressed(); 
+0

あなたの提案に感謝します –

関連する問題