2012-01-02 102 views
0

我已經創建了一個TabHost並將其分配給4個活動意圖,並且這些看起來很好。我唯一的問題是活動內容沒有顯示在我的tabhost視圖中的framelayout #tabcontent內。Android TabHost內容沒有顯示

我跟着官方的參考資料,並掃描了互聯網的解決方案,但我看不出什麼問題。

Log.v(「Activity」,「Reports」)記錄在ant中,因此它執行該活動。因此,我在我的ReportsActivity中猜測它導致問題的setContentView()。但我是新來的,所以我不知道。 (有沒有產生錯誤)

這是我tabhost

<?xml version="1.0" encoding="utf-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@android:id/tabhost" 
    android:background="#FFFFFF"> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:background="#FFFFFF"> 

     <TabWidget 
      android:id="@android:id/tabs" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="0" /> 

     <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:padding="5sp" 
      android:layout_weight="1" /> 

    </LinearLayout> 

</TabHost> 

這是我在我的TabActivity

// Glob 
Intent intent; 
TabHost tabHost = getTabHost(); 
TabHost.TabSpec spec; 
Resources res = getResources(); 

// Reports tab 
intent = new Intent().setClass(this, ReportsActivity.class); 
spec = tabHost.newTabSpec("reports") 
     .setIndicator(
       res.getText(R.string.reports), 
       res.getDrawable(R.drawable.reports)) 
     .setContent(intent); 
tabHost.addTab(spec); 

添加標籤,這是我的內容的活動(R.layout.reports =帶有文本視圖的線性佈局)

public class ReportsActivity extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.reports); 

     Log.v("Activity", "Reports"); 
    } 
} 

回答

0

嘗試實現像這樣的TabSpec:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

spec = tabHost.newTabSpec("reports") 
       .setIndicator(
        res.getText(R.string.reports), 
        res.getDrawable(R.drawable.reports)) 
       .setContent(intent); 
+0

TabSpec沒有addFlags方法,所以我嘗試在我的意圖上使用標誌,但仍然沒有顯示我的ReportsActivity LinearLayout中。 **編輯:**我的ReportsActivity是否應該擴展除默認Activity超類之外的其他任何活動? – Daniel 2012-01-02 11:58:35

+0

如果我在我的xml中刪除TabWidget,FrameLayout突然顯示活動內容。我嘗試使用邊距來查看TabWidget是否與FrameLayout重疊,但情況並非如此(我認爲)。 TabWidget是否與此有關? – Daniel 2012-01-02 13:25:09

+0

我沒有看到,你初始化了tabspec之外的意圖。 addFlag屬於意圖。看到我更正的答案。 – Dyonisos 2012-01-02 15:00:17

0

這是因爲您選擇了一個默認爲水平佈局的LinearLayout。 如果在LinearLayout標籤內設置android:orientation =「vertical」,它應該可以解決您的問題