0

我有一個屏幕有兩個選項卡,每個選項卡我試圖運行不同佈局的不同片段。如何使用選項卡在Android屏幕中運行片段?

目前,我有以下幾點:

  • MainFragmentActivity - activitiy延伸FragmentActivity
  • mainFraggment_screen - XML爲MaiFragmentActivity
  • 片段1 - 活動時對TAB1用戶點擊
  • fragmnet1_screen - XML爲
  • Fragment2 - 用戶點擊Tab2時的活動
  • fragment2_screen - XML的

一切正常,但問題是,當應用程序開始只有一個空白屏幕與選項卡Tab1和Tab2。例如,某些活動的片段僅在用戶單擊Tab2時出現。當他在Tab1上單擊時,Tab1的片段正常顯示。

我想爲Tab1的片段在應用程序啓動時立即啓動,但我不知道如何完成該操作。

任何想法? :D

回答

0

的解決方案是將所有的選項卡之後,這需要在的onCreate()來完成:

TabInfo activeTab = (TabInfo) this.hashMapTab.get("Tab1"); 
    FragmentTransaction ft = this.getSupportFragmentManager().beginTransaction(); 
    activeTab.fragment = Fragment.instantiate(this,activeTab.className.getName(), activeTab.args); 
    ft.add(R.id.tab1, activeTab.fragment, activeTab.tag); 
    ft.attach(activeTab.fragment); 
    lastTab = activeTab; 
    ft.commit(); 

hashMapTab是所有標籤的TabInfo的散列映射。 TabInfo是所有選項卡數據的容器,例如選項卡的類名稱和標記。

2

這聽起來像碎片事務問題。但我需要查看MainActivity的代碼。

我假設你正在使用FragmentTransactions.add和FragmentTransaction.replace來移入和移出它們。

+0

嗯......我用fragment.attach,fragment.detach和fragment.commit來做。所以,每次點擊標籤後,應用程序會檢查是否選擇了新標籤。如果是新選項卡,則刪除舊片段並附加新片段。如果它是一箇舊選項卡,沒有任何反應。當用戶點擊標籤時,一切正常,但我不喜歡那個應用程序啓動時的空白屏幕。 – Cristiano

+0

tabInfo.fragment = this.getSupportFragmentManager()findFragmentByTag(「Tab1」); FragmentTransaction fragment = this.getSupportFragmentManager()。beginTransaction(); fragment.attach(tabInfo.fragment); fragment.commit(); – Cristiano

+0

O.K.那麼它可能是你只是沒有設置當前標籤加載? TabHost.setCurrentTab(mCurrentTab); –

相關問題