0

3 つのフラグメント (メイン、概要、ヘルプ) があります。3 つのオプション (「メイン フラグメントを表示」、「フラグメントについて表示」、「ヘルプ フラグメントを表示」) を含むメニューがあります。

3 つのメニュー オプションのいずれかを選択すると、次のようになります。

    Fragment fragment = null;

    switch (position) {

        case 1:
            fragment = new MainFragment();
            break;              
        case 3:
            fragment = new HelpFragment();
            break;
        case 4:
            fragment = new AboutFragment();
            break;

        default:
            break;
    }
    FragmentManager fragmentManager = getSupportFragmentManager();

    FragmentTransaction ft = fragmentManager.beginTransaction();

    ft.replace(R.id.content_frame, fragment);

    ft.addToBackStack(null);

    ft.commit();

2 つ、3 つ、またはそれ以上の異なるフラグメントを追加すると、問題なく動作します。

しかし、同じフラグメントを連続して追加すると、戻るボタンをクリックすると、以前に追加されたものではなく、同じフラグメントが表示されます。

もっとよく説明しましょう。

  1. 「フラグメントについて表示」をクリックします
  2. AboutFragment が MainLayout に追加されます
  3. AboutFragment が画面に表示されます
  4. 「メインフラグメントを表示」をクリック
  5. MainFragment が MainLayout に追加されます
  6. MainFragment が画面に表示される
  7. 「メインフラグメントを表示」をクリックします(再度)
  8. MainFragment が MainLayout に追加されます (再び)
  9. MainFragment が画面に表示されます (再び)
  10. 戻るボタンをクリック
  11. MainFragment が画面に表示されます !!

戻るボタンをクリックすると (ステップ 10)、AboutFragment を表示したいと思います。しかし、MainFragment が再び表示されます。そうですよね?または私は何か間違ったことをしていますか?前に popBackStack() 呼び出しを行う必要がありますか?

私の英語に感謝し、申し訳ありません

4

1 に答える 1

0

MainFragmentステップ 10 で [戻る] ボタンを押した後、2 回追加するので、もちろんMainFragment、バック スタックにはまだ別のボタンが表示されます。

MainFragment を再度表示したくない場合は、再度バックスタックに追加しManiFragmentないでください。AboutFragment

于 2013-11-12T19:32:23.777 に答える