2010-05-31 92 views
9

我有一個TabActivity,並將有3或4個選項卡。更新標籤在Android TabHost中的活動選項卡

在TabA中,我想要一個ExpandableListView,它將列出產品。我希望TabC充當一種「購物車」,可能帶有一個ListView本身。

有沒有一種方法與活動中的TabHost進行交互?我希望能夠點擊TabA中的一個按鈕並更新並切換到TabC。這可能嗎?我可以讓Tab的活動調用它的父母方法嗎?

回答

16

如果你實現你的標籤作爲視圖,而不是單獨的活動,這會更簡單,運行更快,佔用更少的內存,併成爲更好的解決方案恕我直言。

話雖這麼說,在選項卡中Activity,叫getParent()得到的TabActivity。然後,你可以使用disretrospect指出的方法。

+5

1爲使用getParent()末端 - 雖然我不理解使用視圖而不是活動的建議。我更喜歡分離生命週期的活動,也喜歡分離屬於每個標籤的代碼。 – FrVaBe 2011-02-23 13:57:13

+0

@ K。 Claszen:「分開生命週期」 - 他們的生命週期不是分開的。 「也分離屬於每個標籤的代碼」 - 以Java類文件形式的代碼分離已經存在了15年。您不需要爲此使用單獨的活動。 – CommonsWare 2011-02-23 14:05:08

+1

感謝您的回覆。正如我所觀察到的,僅當選擇了關聯的選項卡時纔會調用活動生命週期方法(onCreate等)。我希望能夠在選項卡中擴展諸如「ExpandableListActivity」的提供的活動。但是,這兩種可能性都是根據需求提供的,並且根據需要而定,所以我只是想知道是否可以提供一般性建議。 – FrVaBe 2011-02-23 14:26:49

1
  1. 在你的活動中,使用的getParent()來獲取TabActivity父
  2. 在你TabActivity類,使用getLocalActivityManager()。getActivity(tabId)來獲得活動對象
  3. 調用活動對象的方法
+0

如何獲得該活動#3中的視圖 – Mikey 2012-07-02 09:52:30

3

嘗試使用此代碼到一個標籤中改變活性:

TabActivity parent = (TabActivity) getParent(); 
TabHost tabhost = parent.getTabHost(); 
tabhost.setCurrentTab(0); 
相關問題