簡體   English   中英

在TabHost中切換片段

[英]Switching Fragments in TabHost

這是我的布局設計:

    MainActivity
         |
    MainFragment
         |
      TabHost
         |
_____________________
|     |     |     |
Tab1  Tab2  Tab3  Tab4
      |
     ft.replace(MainActivityContainer, FragmentThatDoesSomething)
      |
   FragmentThatDoesSomething

如您所見,在主活動容器上有一個執行ft替換的按鈕,並加載FragmentThatDoesSomething來完成任務。

在FragmentThatDoesSomething中,我想有一個返回TabHost的Tab2並保留標簽的按鈕。

我使用該活動在片段之間傳輸數據,因此在活動中我想執行一些ft事務以返回到tab2。

最簡單的方法是什么? 如果我使用getChildFragmentManager和Tab2的容器運行ft事務,則會遇到此問題

因為我使用的是支持v4 Fragment類。

我將對片段事務使用addToBackStack(null) 然后,FragmentThatDoesSomething中定義的按鈕可以調用getActivity.onBackPressed()

那時,只需要確保保存狀態即可。

// MainActivity.java
@Override
public void someCallbackMethod(Object obj1, Object obj2) {
    // have MainActivity store your values and Tab2 fragment accesses data
    // through callback references when Tab2.onCreateView() is called.

    onBackPressed();

    // OR retrieve your Tab2 fragment and manually update values here via 
    // some kind of accessor
}

我選擇實施活動是因為處理嵌套片段很麻煩。

我遇到的一個難題是將數據從FragmentThatDoesSomething(現在是一個活動)發送回選項卡2。由於選項卡2是MainFragment的嵌套片段,我不得不重寫MainFragment中的onActivityResult才能將數據發送回子選項卡2。我認為這是因為我正在使用v4 Fragment支持類。

我使用這段代碼做到了

編譯'com.android.support:design:22.2.0'我需要使用上面的材料設計庫來解決您的問題。 您可以在一個viewPager中添加多個片段。

它將為您提供其他更多選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM