2012-06-20 119 views
1

我想創建選項卡,它將顯示通過代碼創建的某些視圖。現在我可以將視圖傳遞給TabHost,但只能通過id。Android:使用TabHost以編程方式創建視圖

於是,我就指派一些隨機ID,說1001我的編程方式創建視圖 -

TabHost th = getTabHost(); 
View v=getMyView(); v.setId(1001); 
th.addTab(th.newTabSpec("tab1").setIndicator("Monthly").setContent(v.getId())); 

我得到一個強制關閉,當我跑這與消息沒有視角數量1001

是否有任何其他方式可以在TabHost中使用我自己生成的視圖或選項卡式界面?

+0

編譯器無法找到gettabHost()函數,你能告訴更多關於它的東西嗎? –

回答

3

您需要使用TabHost.TabContentFactory的超載setContent()方法的版本。

th.addTab(th.newTabSpec("tab1") 
    .setIndicator("Monthly") 
    .setContent(new TabHost.TabContentFactory() { 
     @Override 
     public View createTabContent(String tag) { 
      if (tag.equals("tab1")) { 
       return getMyView(); 
      } 
      return null; 
     })); 
+0

哇,真棒。你怎麼知道這樣的事情?閱讀文檔? – KalEl

+1

@KalEl閱讀[API演示的源代碼](http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Tabs2.html)。這非常有用! –