【问题标题】:Closing/restarting Activities in TabHost在 TabHost 中关闭/重新启动活动
【发布时间】:2012-03-01 04:59:54
【问题描述】:

我正在开发一个包含顶级 TabActivity 的 Android 2.3.3 应用程序。我还以编程方式向 TabHost 添加了许多选项卡,并为每个选项卡提供了一个单独的子 Activity:

intent = new Intent().setClass(this, MyFirstActivity.class);
spec = tabHost.newTabSpec(...).setIndicator(...).setContent(intent);
tabHost.addTab(spec);

intent = new Intent().setClass(this, MySecondActivity.class);
spec = tabHost.newTabSpec(...).setIndicator(...).setContent(intent);
tabHost.addTab(spec);

我的应用程序的其他地方发生了一个事件,作为响应,我想重新创建所有选项卡活动。为此,我调用了 getTabHost().clearAllTabs(),尽管它从选项卡中删除了它们,但它似乎并没有真正杀死活动。如果我再次运行上述代码,现有活动将简单地添加回它们的选项卡,并且它们会像以前一样继续运行。

创建意图时是否需要设置标志或其他内容,以便它们正确关闭并再次创建?或者,是否有任何其他方式可以让子 Activity 告诉它们何时从父 TabActivity 中删除?

【问题讨论】:

    标签: java android android-activity android-tabhost tabactivity


    【解决方案1】:

    您可以通过设置标志来重新启动 Activity。代码如下。

        spec = tabHost  .newTabSpec("tab1")
                        .setIndicator("FirstActivity")
                        .setContent(new Intent(this,MyFirstActivity.class)
                        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
        tabHost.addTab(spec);
    

    【讨论】:

    • 谢谢拉朱。我确实在文档中看到了那个标志,但我完全误解了它的用途;出于某种原因,我认为它清除了整个活动堆栈。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多