私は一日中答えを探していましたが、この質問に合った解決策は見つかりませんでした。Android BottomNavigationの適切なバックナビゲーションの実装方法
InstagramまたはPlayKioskアプリのようなBottomNavigationの使い方を作成する方法を探しています。フラグメントはバックスタックに1回だけ追加する必要があります。戻るボタンを押すと、訪問した最後のフラグメントと、そのFragmentに合うようにBottomNavigationのボタンにジャンプすることが期待されます。
現在、私は次のコードを使用し
//BottomNavigationListener
private BottomNavigationView.OnNavigationItemSelectedListener buttonNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
FragmentManager fragmentManager = getSupportFragmentManager();
switch (item.getItemId()) {
case R.id.navigation_game:
currentFragment = GameFragment.newInstance();
fragmentManager.beginTransaction()
.addToBackStack(TAG_FRAGMENT_GAME)
.replace(R.id.content_frame, currentFragment, TAG_FRAGMENT_GAME)
.commit();
break;
case R.id.navigation_tournament:
currentFragment = TournamentFragment.newInstance();
fragmentManager.beginTransaction()
.addToBackStack(TAG_FRAGMENT_TOURNAMENT)
.replace(R.id.content_frame, currentFragment, TAG_FRAGMENT_TOURNAMENT)
.commit();
break;
case R.id.navigation_history:
break;
}
return true;
}
};
をしかし、これは私が私のBottomNavigationのボタンを数回押すと、このごとに新しいフラグメントがインスタンス化されるだろうクリックするという問題につながります。また、BottomNavigationボタンは、Fragmentsに従って設定されていません。
私はこの答えを見つけたが、それはあなたがInstagramのの同じ作業のロジックを持って次の構造を使用することができますPrevent The Same Fragment From Stacking More Than Once (addToBackStack)
あなたはonBackPressed方法を扱うことができ、次のよう
その後、あなたの活動を更新しますか?最後のフラグメントを開いたままにしておき、戻るボタンを押すと、最後に読み込んだフラグメントを置き換えます。 –