繁体   English   中英

在TabActivity的单个选项卡中重新启动活动?

[英]Restarting an activity in a single tab in a TabActivity?

我有一个TabActivity。 每个选项卡都指向子活动。 这非常有效。

是否有任何聪明的方法来刷新其中一个活动标签? 我只想“重新启动”标签#3中的活动。 除了构建对活动本身的刷新支持,或者清除所有选项卡并重新创建所有选项卡之外,还不确定这样做的好方法。

谢谢,

稍微更动态的解决方案:

LocalActivityManager manager = getLocalActivityManager();
String currentTag = tabHost.getCurrentTabTag();
Class<? extends Activity> currentClass = manager.getCurrentActivity().getClass();
manager.destroyActivity(currentTag, true);
manager.startActivity(currentTag, new Intent(this, currentClass));

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

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

我自己没有尝试过,但通常使用LocalActivityManager访问每个单独的选项卡的Activity 可以使用getLocalActivityManager()TabActivity检索此内容。

看起来你应该能够使用destroyActivity()startActivity()重新启动一个Activity,虽然我不确定这是否可行(因为我自己没有这样做)。 需要注意的一件重要事情是,Activity的id将等同于为tab设置的标记(例如,您提供给TabHost.newTabSpec(String) )。

LocalActivityManager manager = getLocalActivityManager();
manager.destroyActivity("tab3", true);
manager.startActivity("tab3", new Intent(this, ThirdTab.class));

这是解决方案:

tabHost.setOnTabChangedListener(this);
public void onTabChanged(String tabId) {
        Log.d(LOG_KEY, tabId);
        LocalActivityManager manager = getLocalActivityManager();
        manager.destroyActivity("ID_1", true);
        manager.startActivity("ID_1", new Intent(this, YourMyActivity.class));
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM