2012-11-03 17 views
8

MAINをバックスタティック用に 'main/root'にする必要があるヘッダーバー(ちょっとしたメニュー)と4つのフラグメント(MAIN、A、B、C)があります。Androidフラグメントのナビゲーションとバックスタック

問題MAIN> A> B> Cのようにメニューを経由するユーザーがいる場合。 バックスタックを単に使用すると、それは逆の順序で行なわれます。私は関係なく、ユーザが間違っている私の現在のコード(ではなく、MAINと現在のフラグメントで切り替え時、それはアプリを終了したもの3.

enter image description here

のいずれかにナビゲートする方法戻っMAINに行かないように背中のボタンを必要とする )他の非MAINフラグメントから次のようになります。

private void SwitchFragment(Fragment pFragment) 
{ 
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
    ft.replace(R.id.main_fl_fragmentcontainer, pFragment); 
    if (_CurrentFragment == _Frag_Main) 
     ft.addToBackStack(null); 
    ft.commit(); 

    _CurrentFragment = pFragment; 
} 
+0

のようになります。メインのフラグメントのみをバックスタックに追加し、他のものは追加しません。 –

答えて

4

あなたのスタック必見最大

主な 主なonBackstack/AorBorCで表示されている時に2つの断片が含まれています表示されます。 ユーザーが戻る==>メインが表示されます。バック==>アプリケーションの終了

上 ユーザーのクリック私は

するユーザーのクリックがあなたのメニューで、あなたが/かどうかを確認する必要がある場合は、このときのように、A/B/Cは、同じビューに表示されていると仮定しますB/Cが現在表示されており、ユーザーが選択したものに置き換えられます。

private void displayFragment(Fragment pFragment) { 
    Fragment fr = getSupportFragmentManager() 
      .findFragmentById(R.id.main_fl_fragmentcontainer);   
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
    ft.replace(R.id.main_fl_fragmentcontainer, pFragment); 
    if (_CurrentFragment == _Frag_Main) { 
     ft.addToBackStack(null); 
    } 
    ft.commit();  
    _CurrentFragment = pFragment; 
} 

は、あなたの活動の方法を無効にすることができます。OnBackPressed