2011-05-20 69 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