无论我们将tab2设置为默认选项卡,android第一个选项卡intent oncreate总是被调用

时间:2010-03-03 11:08:14

标签: android tabwidget

以下是带有意图数据的标签示例。

调试时我发现总是在第一个标签页面中我们在标签主机中添加标​​签

tabHost.addTab(tabHost.newTabSpec("tab1")
                    .setIndicator("list")
                    .setContent(new Intent(this, List1.class)));

oncreate方法“List1”意图被调用,无论它是否是我们当前的标签,即使我将tab2定义为当前标签如何解决这个问题?

public class Tabs3 extends TabActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final TabHost tabHost = getTabHost();

        tabHost.addTab(tabHost.newTabSpec("tab1")
                .setIndicator("list")
                .setContent(new Intent(this, List1.class)));

        tabHost.addTab(tabHost.newTabSpec("tab2")
                .setIndicator("photo list")
                .setContent(new Intent(this, List8.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));

        // This tab sets the intent flag so that it is recreated each time
        // the tab is clicked.
        tabHost.addTab(tabHost.newTabSpec("tab3")
                .setIndicator("destroy")
                .setContent(new Intent(this, Controls2.class)
                        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));
    }
}

2 个答案:

答案 0 :(得分:1)

  

setDefaultTab(1);

当单独的活动用作选项卡内容时,

似乎不适用于TabActivity。

使用以下代替此方法,

  

<强> tabHost.setCurrentTab(1);

这会将“照片列表”(即第二个标签)设置为选定或默认标签...

答案 1 :(得分:0)

我也发现了同样的行为,我没有具体的解决方法。但我确实知道解决方法。

不是将活动附加到每个选项卡,而是将视图附加到每个选项卡。然后,您可以非常轻松地处理数据传递,因为每个视图都在同一个Activity中。这也消除了使用Intents传递信息的需要。此外,您可以根据需要创建(或膨胀)视图,并进行更多控制。

祝你好运, 斯科特