2017-12-27 52 views
1

こんにちは私は複数のフラグメントストアと再利用に固執しました。フラグメントストアと再利用:TabViewを使用した複数の子フラグメント

  • マイschenario

以下の図に示すような、私はone Activity 2-4子断片を有するタブで3 Tabs(viewpager無しだけ断片変化)を有します。

だから、アクティビティを開くとき。
1)タブ1ロードおよび表示F1フラグメント。
2)タブ2を表示し、F1を表示してください。
3)F1のボタンをタップしてTab2のF2フラグメントに移動
4)再びF2のボタンをタップしてTab2のF3 Fragmentに移動します。
5)今すぐTab3をタップしてF1フラグメントを開きます。私はTAB2をタップするとbackstack ヌルを持つ偉大な作業

この5は

fragmentTransaction.addToBackStack(null); 

が、知っている、

6)それは常にF1フラグメントが表示されます。私は以下のスニペットのような活動をしています。私は必要なもの

switch (selected) { 
     case 0: 
      showFragment(TAB1.newInstance("", ""), TAG_HOME); 
      break; 
     case 1: 
      showFragment(TAB2.newInstance("", ""), TAG_FAV); 
      break; 
     case 2: 
      showFragment(TAB3.newInstance("", ""), TAG_ADD); 
      break; 
} 

6)私のような、それはフラグメントが、私はOpened F3フラグメントたこのTAB2にlast timeでbecase F3を示し、私はTAB2をタップしたとする必要があります。

どのように店舗タブの賢い断片のバックストロークを処理する。

そして、はいまた、私はタブ2 F1にいるステップ(OnBackpress)以下のような

suppouseを必要とする - > F2 - >バックF3キーを押した後にF3
- > F2(backpress) - > F1(backpress) - >近い活動

enter image description here

答えて

1

あなたはStack of fragment in Hashmapを保存して、タブを変更したときに取得することができます。

HashMap<String, Stack<Fragment>> mStacks = new HashMap<String, Stack<Fragment>>(); 
mStacks.put(AppConstants.TAB_A, new Stack<Fragment>()); 
mStacks.put(AppConstants.TAB_B, new Stack<Fragment>()); 
mStacks.put(AppConstants.TAB_C, new Stack<Fragment>()); 

プッシュフラグメント

mStacks.get(tag).push(fragment); 

ながら作業デモ、しばらくポップフラグメント

mStacks.get(mCurrentTab).pop(); 

からGithub

+0

OMG ..私の時間を節約するために巨大な感謝。アップヴォートに値する。 –

関連する問題