2011-05-20 100 views
-1

我有一個選項卡活動,我的每個應用程序選項卡都打開相同的活動讓我們說SecondActivity.So代碼如下所示。將數據從tabhost活動傳遞到其內部活動

TabSpec firstTab = tabHost.newTabSpec("tid1"); 
firstTab.setIndicator("First Tab Name").setContent(new Intent(this,SecondActivity..class)); 
tabHost.addTab(firstTab); 

TabSpec secondTab = tabHost.newTabSpec("tid1"); 
firstTab.setIndicator("Second Tab Name").setContent(new Intent(this,SecondActivity.class)); 
tabHost.addTab(secondTab); 

現在我想在每次調用SecondActivity活動時從我的選項卡活動中傳遞一些數據。所以,我想是這樣,但它沒有似乎工作:

TabSpec firstTab = tabHost.newTabSpec("tid1"); 
    Intent intent = new Intent(this, SecondActivity.class); 
    Bundle b1 = new Bundle(); 
    b1.putString("name","Something"); 

firstTab.setIndicator("First Tab Name").setContent(intent); 
tabHost.addTab(firstTab); 


TabSpec secondTab = tabHost.newTabSpec("tid1"); 
    Intent intent = new Intent(this, SecondActivity.class); 
    Bundle b2 = new Bundle(); 
    b2.putString("name","Something2"); 

secondTab.setIndicator("First Tab Name").setContent(intent); 
tabHost.addTab(SecondTab); 

沒有人有任何想法,如果它應該以這種方式工作,或者是有可能做到這一點在任何其他方式? 在其他世界,我想要第二個活動知道哪些標籤被按下

+0

你還沒有添加包的意圖! – varuaa 2011-05-20 18:36:25

+0

什麼沒有工作?獲取數據或將其導出到結果活動中? – 2011-05-20 18:46:24

回答

0

我不知道我遵循你想問什麼,但它可以傳遞數據(各種類型)構成TabHost選項卡的Activity類。舉個例子,你可以看看這個線程(Android - creating a Generic TabHost, passing info using Bundle problem),討論如何設置一個TabHost,然後創建基於活動的選項卡,並根據需要將數據傳遞給它們。

剛注意到varuaa的音符。是的,如果沒有向Intent添加任何內容,捆綁包就不會有任何好處。查看intent.putExtra瞭解可以輕鬆添加的各種項目。我使用實現Serializable的類將數據傳遞到新的Activity。

+0

這可能會脫離主題,但通過意圖傳遞Serializable類是一種很好的做法。我不得不實施類似的東西,所有的網民都不願意使用它,而Parcelable據說是要走的路。 – varuaa 2011-05-20 18:48:18

+0

@varuaa,你是對的,這似乎是一個辯論本身。從高層看來,對Serializable的爭論就是它比Parcelable慢。這個線程(http://stackoverflow.com/questions/5550670/benefit-of-using-parcelable-instead-of-serializing-object)似乎有一些很好的信息。我可能需要重新查看我的使用情況,看看Parcelable是否會更好地工作。 – bursk 2011-05-20 20:31:56

3

你可以做這樣的事情,

TabSpec firstTab = tabHost.newTabSpec("tid1"); 
Intent intent = new Intent(this, SecondActivity.class); 
intent.put("name", "Something1"); 

firstTab.setIndicator("First Tab Name").setContent(intent); 
tabHost.addTab(firstTab); 

從SecondActivity,在onCreate方法,你可以調用getIntent(),然後提取信息。

+1

這就是我正在使用的。實際上函數名稱是intent.putExtra(「name1」,「value」)謝謝兩個。 – George32x 2011-05-20 19:02:09

+0

@ George32x,不客氣。如果他們幫助,請不要忘記選擇其中一個答案。 – bursk 2011-05-20 20:33:45

+0

這正是我正在尋找的。我覺得自己沒有想到這件事,我感到很蠢,但是很好。他們需要更新Tabhost/tab小部件以接受構造函數中的額外內容。或者添加一個方法來獲取額外的。我討厭爲每個標籤使用不同的意圖。我想知道只有1個。但是,這將起到其目的 – Shaun 2011-12-31 22:21:21

相關問題