【问题标题】:Update tabs from a tab's activity in a Android TabHost从 Android TabHost 中的选项卡活动更新选项卡
【发布时间】:2010-05-31 18:14:43
【问题描述】:

我有一个 TabActivity 并且将有 3 或 4 个选项卡。

在 TabA 中,我想要一个可以列出产品的 ExpandableListView。我希望 TabC 充当一种“购物车”,可能带有自身的 ListView。

有没有办法从 Activity 与 TabHost 交互?我希望能够单击 TabA 内的按钮并让它更新并切换到 TabC。这可能吗?我可以让 Tab 的活动调用它的父方法吗?

【问题讨论】:

    标签: android android-activity android-intent android-tabhost


    【解决方案1】:

    如果您将选项卡实现为视图,而不是单个活动,这会简单得多,运行速度更快,占用内存更少,恕我直言,这是一个更好的解决方案。

    话虽如此,在标签 A Activity 中,调用 getParent() 以获取 TabActivity。然后就可以使用disretrospect指出的方法了。

    【讨论】:

    • getParent() 提示 +1 - 尽管我不理解使用视图而不是活动的建议。我更喜欢活动来分隔生命周期,也喜欢分隔属于每个选项卡的代码。
    • @K. Claszen:“分离生命周期”——它们的生命周期不是分开的。 “还要分离属于每个选项卡的代码”——Java 类文件形式的代码分离已经存在了 15 年。您不需要为此使用单独的活动。
    • 感谢您的回复。正如我所观察到的,只有在选择了关联的选项卡时才会调用活动生命周期方法(onCreate 等)。而且我希望能够在选项卡中扩展提供的活动,例如ExpandableListActivity。但是,这两种可能性都提供了,并且根据要求有意义,所以我只是想知道是否可以提供一般性建议。
    【解决方案2】:

    尝试使用此代码更改选项卡中的活动:

    TabActivity parent = (TabActivity) getParent();
    TabHost tabhost = parent.getTabHost();
    tabhost.setCurrentTab(0);
    

    【讨论】:

      【解决方案3】:

      您可以从 TabActivity 调用 getTabHost,请参阅 public TabHost getTabHost()

      请参阅 Tabhost 以获取 setCurrentTab,public void setCurrentTab(int index)

      【讨论】:

        【解决方案4】:
        1. 在您的 Activity 中,使用 getParent() 获取 TabActivity 父级
        2. 在您的 TabActivity 类中,使用 getLocalActivityManager().getActivity(tabId) 获取 Activity 对象
        3. 调用Activity对象的方法

        【讨论】:

        • 如何在 Activity #3 中获取视图
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-04
        • 1970-01-01
        相关资源
        最近更新 更多