1

Gmailアプリケーションのようにフラグメントのナビゲーションを作成する必要があります。それは、メイン・フラグメントAを1つ持ち、ナビゲーション・ドロワーから別のフラグメント(B、C、D ...)を開くことができます。新しいフラグメントを開くと、メイン・フラグメントの上に開きます。ボタンを押すと、すべてのケースでメインフラグメントAに戻り、カウントされた新しいフラグメントをカウントしません。それは、最初の主な断片であると思われます。フラグメントのbackStackを追加することなく、メソッド(int FragmentTransaction)を追加します。次に、次のフラグメントBはメソッドaddも使用し、バックスタックに追加します。別のものを開く必要がある場合(フラグメントC)、2番目のフラグメントBを置き換える必要があります。しかし、replace()メソッドを使用すると、すべてのコンテナが置き換えられ、メインのフラグメントAはフラグメントCまたはBアプリを閉じる。だから、問題は、断片Aを失うことなく、断片BまたはCのみをどのように置き換えるかです。フラグメントのナビゲーション

答えて

1

有効な解決策では、あなたの活動に2つのコンテナframelayoutsを持っているだろう。最初のもの(もう一方の下にあるもの)にはフラグメントAが含まれています。開いたものはすべて、2番目のコンテナに追加/置き換えられます。あなたはB、C、Dなど、あなたの断片を追加する場所

別の解決策は、なぜ、私はaddToBackStack(null)を行うときに

+0

私は2番目の解決策を作ることを試みます。私はフラグメントAを静的に追加し、別のフラグメントのために上部のFrameLayout上に作成しました。新しいフラグメントを開くときにreplace()を使用しますが、問題に直面します。新しいフラグメントをスタックに追加すると、onBackが押されています。 –

+1

私は、私は別のものから最初の断片のみをスタックに追加する必要があると思います(例えば:B、C、Dなど) –

+0

はい先頭へ追加スタック最初の断片のみ – Redman

1

オープンこの

HighlightFragment highlightFragment=new HighlightFragment(FirstReaderScreen.this); //Your fragment 
    getSupportFragmentManager() 
    .beginTransaction() 
    .add(R.id.LL_Fragment, highlightFragment) // LL_fragment is container 
    .addToBackStack(null) 
    .commit(); 

同様フラグメントと活動OnBackPress

@Override 
public void onBackPressed() { 
    if (getSupportFragmentManager().getBackStackEntryCount() > 0) { 
     getSupportFragmentManager().popBackStack(); 
    } else { 
     super.onBackPressed(); 
    } 
} 
+0

ます。レイアウトで静的にフラグメントAが含まれており、その上にあなたのコンテナでframeLayoutを持つことです、私はクラッシュNullPointerExceptionがありますか? –

+0

それは私のためにうまく働くLogcatを投稿することができます – Redman

関連する問題