2012-04-02 42 views
1

我正在創建一個在主屏幕上有三個選項卡的應用程序。每個選項卡我都將內容設置爲單獨的活動。我使用活動而不是片段的原因是因爲在其中一個選項卡中,我需要能夠使片段和嵌套片段不受支持。沒有TabActivity,ActivityGroup或LocalActivityManager的TabHost

起初,我是在擴展TabActivity來這麼做的,但後來我意識到它已被棄用,所以我開始環顧四周。我發現有人建議在這裏使用一個ActivityGroup,但是......也被棄用。

看來StackExchange上的所有解決方案對於我遇到的問題都包含棄用的功能。如Android: TabHost without TabActivityAndroid - Tabhost working in Activity class

有什麼正確的方式來使用TabHost並允許選項卡包含碎片而不使用棄用的功能?

下面是我目前有

import android.app.ActivityGroup; 
import android.content.Intent; 
import android.os.Bundle; 
import android.widget.TabHost; 
import android.widget.TabHost.TabSpec; 

public class HomeTabs extends ActivityGroup { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     TabHost host = (TabHost)findViewById(android.R.id.tabhost); 
     LocalActivityManager mlam = new LocalActivityManager(this, false); 
     mlam.dispatchCreate(savedInstanceState); 
     host.setup(mlam); 

     TabSpec spec = host.newTabSpec("Home"); 
     spec.setContent(new Intent(this, HomeActivity.class)); 
     spec.setIndicator("Home"); 
     host.addTab(spec); 

     spec = host.newTabSpec("Browse"); 
     spec.setContent(new Intent(this, BrowseActivity.class)); 
     spec.setIndicator("Browse"); 
     host.addTab(spec); 

     spec = host.newTabSpec("About"); 
     spec.setContent(new Intent(this, AboutActivity.class)); 
     spec.setIndicator("About"); 
     host.addTab(spec); 
    } 
} 
+0

請參閱http://developer.android.com/reference/android/app/TabActivity.html – CommonsWare 2012-04-02 19:51:27

+0

上顯示的TabActivity替換示例替換示例正在擴展FragementActivity,如果我使用它,我將無法在標籤內容中包含一個片段,因爲標籤內容本身就是一個片段,不能將它們嵌套在一起。 – 2012-04-02 19:57:14

回答

3

什麼是有TabHost並允許標籤包含片段,而無需使用否決的功能正確的方法是什麼?

看跌觀點的標籤,無論是靜態佈局的TabHostFrameLayout的直接子,或者通過動態的setContent(),需要一個TabContentFactory的變種。那些視圖可以AFAIK採取管理片段的事物(例如,ViewPager),或者可能通過<fragment>元素直接片段化自己。或者,請不要使用TabHost。使用操作欄中的選項卡,使用ActionBarSherlock進行向後兼容。或者,使用ViewPager。或者,使用ViewFlipperTabWidget(儘管該文檔對TabHost似乎沒有實際的依賴關係)。或者,使用ViewFlipper和其他一些控制機制在「選項卡」之間切換。

或者,擺脫您的「標籤內容中的片段」。

相關問題