2010-04-17 71 views
0

我想訪問一個單一的活動使用2個不同的tabs.For例如我有一個單人活動像人和兩個標籤這些名稱是tab1和tab2.when我點擊tab1我想顯示人頁作爲我的團隊,當我點擊tab2,同一頁面顯示所有顯示標題。這意味着我想訪問一個單一的意圖,兩個選項卡以同樣的方式顯示在該活動中的信息根據Tab.For此目的我可以什麼是嗎?給我一些建議。提前感謝。TabHost問題在android

回答

0

請勿將活動作爲標籤的內容。將視圖作爲標籤的內容。 Here is a sample project展示這種技術。

+0

,爲什麼你會說,在這樣的黑色和白色的條款?我使用我的標籤中的活動,實際上更喜歡它。從概念上講,我在標籤中放入的內容是我將放入「活動」的內容,並且有一種機制可以輕鬆實現,因此我可以在標籤主機級別以及標籤級別訪問活動生命週期方法(即選擇該活動標籤時的onResume)。如果不推薦這樣做,爲什麼框架中會出現TabSpec.setContent(Intent)方法簽名? – Rich 2010-04-17 14:10:00

+2

「你爲什麼要用這樣的黑白條款來說?」首先,它浪費了堆內存。其次,浪費CPU時間。第三,浪費堆棧空間。第四,開發人員在嘗試使用它時往往會感到困惑,這會增加支持問題的數量。第五,我還沒有看到它如何增加任何東西 - 無論您從中獲得的代碼組織是否可以通過另一個類結構完美地實現,而不是「活動」。至於它爲什麼在框架中,API中有很多東西不是最優的。儘管如此,我爲我的回答的苛刻語氣道歉。 – CommonsWare 2010-04-17 14:42:07

1

我不認爲我會重複使用相同的活動爲不同的選項卡。是否有理由不能使用單獨的活動來表示同一數據的不同視圖?我之所以這麼說,是因爲你必須在活動中編寫代碼才能區分選中哪個選項卡,並且我認爲如果您的代碼是固有的,那麼您的代碼基礎將會更清晰。

我在我的TabActivity類似的代碼,用於設置活動通過我的意圖選項卡的內容如下:

mTabHost = getTabHost(); 

    // Tab1 
    Intent tab1Intent = new Intent(this, ActivityForTab1.class); 
    mTabHost.addTab(mTabHost.newTabSpec(TabTag1).setIndicator(TabLabel1).setContent(tab1Intent));  

    // Tab2 
    Intent tab2Intent = new Intent(this, ActivityForTab2.class); 
    mTabHost.addTab(mTabHost.newTabSpec(TabTag2).setIndicator(TabLabel2).setContent(tab2Intent));  

    mTabHost.setCurrentTab(0);