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

发布于 2024-08-23 14:23:27 字数 1236 浏览 11 评论 0原文

以下是带有意图数据的选项卡示例。

在调试时,我发现总是在第一个选项卡中添加选项卡主机时,在我们的情况下,

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

无论它是不是我们当前的选项卡,都会调用“List1”意图的选项卡 oncreate 方法,即使我将 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)));
    }
}

Following is the example of tabs with intent data.

While debugging i found that always when first tab we add in tab host in our case following tab

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

oncreate method of "List1" intent get called regardless it is our current tab or not even if if i define tab2 as a current tab how to fix this ?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

べ映画 2024-08-30 14:23:27

setDefaultTab(1);

当单独的活动用作选项卡内容时,TabActivity 似乎不起作用。

使用以下方法代替此方法,

tabHost.setCurrentTab(1);

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

setDefaultTab(1);

seems not to be working in TabActivity when separate Activities are used as Tab Content.

Use following instead of this method,

tabHost.setCurrentTab(1);

This will set "photo list" (i.e second tab) as the selected or default tab...

玩物 2024-08-30 14:23:27

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

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

祝你好运,
-斯科特

I have found this same behavior as well, and I do not have a specific fix. But I do know of a work-around.

Instead of attaching Activities to each tab, attach a View to each tab. You can then handle the data passing very easily as each view will be in the same Activity. This also eliminates the need to pass information using Intents. Furthermore, you can create (or inflate) your Views as you need them and with more control.

Good luck,
-scott

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文