将数据从tabhost活动传递到其内部活动

时间:2011-05-20 18:11:24

标签: android android-widget

我有一个标签活动,我的每个应用程序标签都打开相同的活动,让我们说SecondActivity.So代码如下所示。

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活动时从我的tab活动传递一些数据。所以我尝试了这种方式,但它似乎没有用:

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);

有没有人知道它是否应该以这种方式工作,或者是否可以以任何其他方式进行? 在其他世界中,我希望第二个活动知道哪个标签被按下

2 个答案:

答案 0 :(得分: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 :(得分:0)

我不确定我是否遵循您要求的内容,但可以将数据(各种类型)传递给组成TabHost选项卡的Activity类。有关示例,您可以查看此线程(Android - creating a Generic TabHost, passing info using Bundle problem),该线程讨论如何设置TabHost,然后创建基于活动的选项卡,并在需要时将数据传递给它们。

刚注意到varuaa的注释。是的,如果没有向Intent添加任何内容,则捆绑包不会有任何好处。查看intent.putExtra,了解可轻松添加的各种项目。我一直使用实现Serializable的类来将数据传递给新的Activity。