2011-04-17 41 views
0

scenerio是這樣的。目前我使用下面的代碼爲每個標籤使用活動的替代方案

TabSpec setContent = tabhost.newTabSpec("tab") 
       .setIndicator("tabview") 
       .setContent(new Intent(tabhost.getContext(), someActivity.class)); 

但據我所知,每個選項卡不應該與一個活動相關聯,我們必須遵循的代碼是這樣的。

TabSpec setContent = tabhost.newTabSpec("tab").setIndicator("tabView").setContent(R.id.layout) 

考慮一個場景,其中tab1調用相機應用程序,tab2解析XML和tab3做一些其他的顯示工作。我該如何解決這個問題?因爲一旦tab被更改,我必須調用這些方法。我如何創建單個活動並將所有責任分配給它?

+0

在保存TabHost的實例中執行所有初始化?這是可行的嗎? – JQCorreia 2011-04-17 16:14:20

+0

「我該如何解決這個問題?」 - 不要將它們放在標籤中。根據您的描述,這些人與彼此之間沒有任何關係,應該是單獨的活動(或者可能是蜂窩UI上的單獨片段),而不是單個活動中的選項卡。 – CommonsWare 2011-04-17 17:41:59

+0

@CommonsWave - 所以你告訴我將佈局分配給TabSpec,並使用TabChangeListner中的Intent將它們分別作爲單獨的活動調用? – Prabhat 2011-04-17 23:48:27

回答

0

您可以使用僅顯示視圖的選項卡創建單個活動。唯一的問題是視圖必須在標籤內定義。

<FrameLayout 
     android:id="@android:id/tabcontent" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
     <ListView 
     android:id="@+id/list1" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1"/> 
     <ListView 
      android:id="@+id/list2" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" /> 
</FrameLayout> 

然後,你的onCreate在TabActivity內部時:

TabHost tabs = getTabHost(); 
TabHost.TabSpec commentsTab = tabs.newTabSpec(TAB_TAG_1); 
tabs.addTab(commentsTab.setContent(R.id.list1)); 

TabHost.TabSpec infoTab = tabs.newTabSpec(TAB_TAG_2); 
tabs.addTab(infoTab.setContent(R.id.list2)); 

請注意,我沒有對任何選項卡中指定的指標,在​​利益空間。

+0

感謝您的回覆。我明白這是如何工作的。我的實際問題是這樣的http://stackoverflow.com/questions/5784821/using-views-instead-of-an-activity-for-each-tab – Prabhat 2011-04-27 06:39:39