我有一个标签活动,我的每个应用程序标签都打开相同的活动,让我们说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);
有没有人知道它是否应该以这种方式工作,或者是否可以以任何其他方式进行? 在其他世界中,我希望第二个活动知道哪个标签被按下
答案 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。