【问题标题】:Restarting an activity in a single tab in a TabActivity?在 TabActivity 的单个选项卡中重新启动活动?
【发布时间】:2010-03-12 00:09:31
【问题描述】:

我有一个 TabActivity。每个选项卡都指向一个子活动。这很好用。

有什么聪明的方法可以刷新其中一个活动标签吗?例如,我只想“重新启动”标签 #3 中的活动。除了为 Activity 本身构建刷新支持或清除所有选项卡并重新创建所有选项卡之外,不确定有什么好方法。

谢谢,

【问题讨论】:

    标签: android android-tabactivity


    【解决方案1】:

    稍微更动态的解决方案:

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

    【讨论】:

    • LocalActivityManager 已弃用。
    • 感谢 Euthyphro。这是一年半前写的。有人已经提供了更好的答案吗?如果有,是哪一个?
    【解决方案2】:

    我自己没有尝试过,但通常您使用LocalActivityManager 访问每个单独标签的Activity。这可以使用getLocalActivityManager()TabActivity 中检索。

    看起来您应该能够使用destroyActivity()startActivity() 重新启动一个活动,但我不确定这是否会起作用(因为我自己没有这样做)。需要注意的重要一点是,Activity 的 id 将等同于您为选项卡设置的标签(例如,您提供给 TabHost.newTabSpec(String) 的字符串)。

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

    【讨论】:

    • 这会在 android.widget.TabHost.setCurrentTab() 第 328 行为我生成一个 NullPointerException
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      解决办法如下:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-27
        • 1970-01-01
        • 2017-08-08
        相关资源
        最近更新 更多