2016-12-21 23 views
0

私はツールバーの下に表示される内容を変更するには、この活動にフラグメントを使用断片バックナビゲーション

 Android.Support.V7.Widget.Toolbar myToolbar = (Android.Support.V7.Widget.Toolbar)FindViewById(Resource.Id.my_toolbar); 
     SetSupportActionBar(myToolbar); 
     SupportActionBar.SetDisplayHomeAsUpEnabled(true); 

とAppCompatActivityを持っています。私は、各フラグメント(SupportFragmentManager.BeginTransaction().Replace(Resource.Id.content, myFragment).Commit())をスタックにプッシュしたいので、ツールバーの戻るボタン・タッチまたはアンドロイド・バック・ボタン・プレスの前のフラグメントをポップして表示します。どうやってするか?

+0

BackStackを使用してください。 https://developer.xamarin.com/guides/android/platform_features/fragments/part_2_-managing_fragments/ –

+0

私はそれを試みましたが、ツールバーの「戻る」ボタンを押すと、スタックに断片があってもアクティビティが終了します。 –

+0

ツールバーの 'SetNavigationOnClickListener'で' OnBackPressed() 'をオーバーライドする必要があり、' SupportFragmentManager.GetBackStackEntryCount() 'が0の項目を返す場合は' Finish'を呼び出し、そうでない場合はBackStackの 'Super' (私はXamarinのメソッド名に慣れていませんが、同じアプローチです^^) – Fllo

答えて

0

私は私の活動にOnOptionsItemSelectedオーバーライドすることであることを解決:

public override bool OnOptionsItemSelected(IMenuItem item) 
    { 
     if (SupportFragmentManager.BackStackEntryCount == 0) 
     { 
      return base.OnOptionsItemSelected(item); 
     } 

     SupportFragmentManager.PopBackStack(); 
     return true; 
    } 

注:OnBackPressedを上書きする必要はありませんが。

0

使用この:

FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
    fragmentTransaction.replace(containerId, fragment, fragment.getClass().getSimpleName()); 
    fragmentTransaction.addToBackStack(null); 
    fragmentTransaction.commit(); 

@Override 
public void onBackPressed() { //or use on menu item clicked 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    if (fragmentManager.getBackStackEntryCount() > 0) { 
     fragmentManager.popBackStack(); 
    }else { 
     super.onBackPressed(); 
    } 
}