0
  • 私はいくつかのタブを持つAndroidアプリケーションを行っていますが、 には2つのタブがあります。 1つのタブは "android.support.v4.app.Fragment"で、 にはいくつかのテキストフィールドとボタンが含まれ、もう1つは "android.app.Fragment"です。これは同時にMapFragmentです。
  • 最初のタップは別の 「android.support.v4.app.Fragment」をcardview(これもサポート)で呼び出し、 を呼び出して、それらをいくつかの階層でナビゲートすることができます。
  • 地図のタップを最初にクリックし、後で他のタブをクリックして をクリックすると、 cardviewsを含むフレームに移動するためのボタンが表示されますが、これらは表示されますが、背景には MapFragment。
  • 私はこれを解決する方法がわかりません。私は置換を使用して削除しようとしました add、popBackStack、...さらに、私は rootviewからフレームを削除しようとしましたが、何も起こりませんでした。
  • 実際、私はあなたのノートパソコンを窓の外に投げる予定です。

ありがとうございます!Androidフラグメントはバックグラウンドのままです

答えて

0

私は何が起こったのかを知りました。これは、2つの異なるフラグメントマネージャ(FragmentManagerSupportFragmentManager)を使用しているためです。
削除または置換するフラグメントタイプ(サポートまたは通常)に応じて、1つまたは別のフラグメントマネージャを使用する必要があります。
私は、どの種類のフラグメントがアクティブ(削除するため)であり、どのようなフラグメントが(置換するために)開始するのかを知るために列挙型を作成しました。私が言ったように、私は3つの断片を持っている

private void manageFragment (FragmentEnum nextFragment) { 

     switch (activedFragment) { 
      case SUPPORT: 
       getSupportFragmentManager().beginTransaction().remove(fragmentSupport).commit(); 
       break; 
      case NORMAL: 
       getFragmentManager().beginTransaction().remove(fragmentNormal).commit(); 
       break; 
     } 

     activedFragment = nextFragment; 

     switch (nextFragment) { 
      case SUPPORT: 
       getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragmentSupport).commit(); 
       break; 
      case NORMAL: 
       getFragmentManager().beginTransaction().replace(R.id.fragment_container, fragmentNormal).commit(); 
       break; 
     } 
    } 
0

.addToBackStack("")を使用している場合は、これを削除してください。あなたのすべてのフラグメントのためにユーザ.replace();のメソッドを毎回呼び出すためです。

+0


多かれ少なかれ、私はこのような関数を作りました。 2つのタブ( '.addToBackStack(" ")、1-support、2- normalはありません)とタブ1から呼び出されたもう1つのフラグメント(これは' .addToBackStack( "") 'を持っています) 。 – Erqox

関連する問題