2013-12-09 54 views
1

我開發使用的ActionBar導航的應用程序,我有3個標籤(我不使用tabhost)作爲圖像下方:Android的動作條標籤:每個選項卡的內容被重建,每次我該選項卡上單擊

enter image description here

在第一個標籤,一個名爲FragmentListItem片段將被示出,如果我點擊項目1,FragmentListItem將由命名FragmentItemDetails另一個片段,其示出了所選擇的項目的細節來代替。

我的問題是,當我選擇TAB2或Tab 3,然後我再重新選擇TAB1,我所得到的是不是FragmentItemDetail了,它是FragmentListItem代替。

那麼,爲什麼呢?如果我想FragmentItemDetail仍然存在,而不是FragmentListItem,該怎麼做?此外,當我按Back按鈕(當選擇Tab1時),我想要FragmentListItem將再次顯示。我意識到Fragment類沒有onBackPressed方法來實現。

回答

0

這個問題有不同的解決方案。

一個可能的解決方案是對此選項卡使用自己的FragmentManager。這可以用getChildFragmentManager()方法Fragments來實現。

另一種解決方案可能是一個標誌,以標識哪個片段顯示爲Tab1上的最後一個。如果您知道最後顯示哪個片段,則可以通過在BackStack中搜索此片段,並使用方法FragmentManager來顯示此片段。

但我建議您嘗試第一個選項。如果每個選項卡都有自己的堆棧,則您的BackButton工作量會減少。

+0

getChildFragmentManager之後的下一步是什麼? 其實我正在用你的第二個解決方案做同樣的任務,但它還沒有工作。 –

+0

如果每個選項卡都有自己的BackStack,則不必搜索BackStack中的最後一個片段( - >因爲您只有一個BackStack)。 BackStak的最後一個片段將自動顯示。你如何在第二個解決方案中「展示」片段?嘗試'替換'片段。 – owe

+0

在tab1中,我有一個名爲「Frag1」的「父片段」,並且在第一次選擇它時,我使用類FragmentTransition的方法'replace'來顯示** FragmentListItem **,並在'onItemClick' ** FragmentListItem **,我顯示** FragmentItemDetails **(使用方法'替換')。 稍後,無論何時點擊Tab1,我都會檢查一個變量'tab1CurrentFragment'來確定將顯示哪個片段。 然而,呃,它不起作用,並且每當選擇Tab1時,它似乎重新創建其內部的每個東西,並始終顯示** FragmentListItem **。 (對不起,我的英文很不好) –

相關問題