我對很多片段都有唯一的活動。 在其中一個片段中,我現在必須在裏面有幾個選項卡。我能想到做起來的方法是:在多個片段中實現片段中的選項卡
解決方案1 - 創建一個新的活動只是爲,然後實現ViewPager:
我關於該解決方案主要關注的是這樣的: 到目前爲止,我的活動,我有以下流程: 片段1 - >片段2 - >片段 - > 3 - >片段4 - >和上...
現在,假設我必須實現這些選項卡片段3.
來自片段2,我開始一個放置viewpager的新活動(片段3在其中一個選項卡中,其他選項卡中的片段爲3)。然後我需要能夠顯示片段4。但由於應用程序中的所有片段都放置在原始活動上,因此會混淆流程或更糟。換句話說引起任一:
- 這將根本不會顯示片段4等,這是因爲運行的活動將被保持的突出部屏幕的一個,而所有的片段被放置在原始活性,這會在堆棧中。
- 不能夠從片段4返回到屏幕與片,然後從屏幕的選項卡「返回」至片段2,然後1.
解決方案2 - 活動對結果(與查看尋呼機):
爲選項卡屏幕創建的活動可能是返回到原始活動的活動。所以流量會是這樣: 片段2 - 的結果>新的活動 - >發送結果返回給原來的活動,指出它需要火起來的片段4現在 - >原活動打開片段4.
然而,這種情況下,如果我從片段4倒退,它會將我扔回片段2而不是該片段屏幕(3)。
解決方案3 - 標籤佈局:
似乎最佳的解決方案。 但是,要使用我需要的getChildFragmentManager()
,這需要API 17及以上。我的API是16. 現在,如果我使用getSupportChildFragmentManager()
,我將不得不使用片段v4。問題在於我的所有片段都是原生的,我不能將片段3更改爲v4,因爲之前的片段和後面的片段必須是v4。因爲我有大約50個片段,所以更改所有片段不是一個選項。
與解決方案3 我遇到的另外一個問題,就是它崩潰並打印:Error inflating class android.support.design.widget.TabLayout
我試圖創建一個新的文件夾命名值-V21,創造那裏的標籤佈局的styles.xml,但由於某種原因沒有幫助。
我希望我說清楚。
*更改所有片段不是一個選項,因爲我有超過一百個片段。* - 這將轉化爲Android Studio中的幾個按鍵。真正的問題是爲什麼你有超過一百個碎片? – Luksprog
大的應用程序。抱歉,我剛剛檢查過 - 這個數字有點誇張。實際數量約爲50個片段(不包括不同的視圖或內容視圖)。還是很多。 坦率地說,我有點不願意將它們全部更改爲v4,所以不會有任何新問題/錯誤/崩潰彈出。所以我不確定它將如何轉換所有這些問題到v4。但我可能是錯的。謝謝 – BVtp
關於解決方案1,**如果**片段4將僅從包含ViewPager的片段3開始,我認爲沒有問題分解爲2個活動(1個直到片段3,另一個繼續)。解決方案2並不是一個真正的選擇。您也有從解決方案3派生的解決方案4:創建一個包含ViewPager的片段,並使Viewpager僅使用普通佈局(沒有嵌套片段),將處理這些佈局留給持有ViewPager的片段。這會給你帶來時間,直到API 16被遺忘,你可以重構它以使用本地嵌套片段。 – Luksprog