Android:如何动态更改打开的选项卡

时间:2010-10-15 12:56:33

标签: android android-activity tabs dynamic

我有一个Android应用程序,它有四个选项卡(我使用主TabActivity与TabHost和TabSpecs)。 在我的一个子活动(在选项卡中打开的活动)中,我需要打开选项卡而不是通过单击选项卡标题,我不知道如何执行此操作。 例如,我的活动中有一个按钮,当我点击它时,它会打开一个不同的选项卡。 目前,这就是我所做的:

Intent intent = new Intent(myActivity.this, myTabActivity.class);
intent.putExtra("ComeFrom", true);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

然后在TabActivity中,如果我真实地阅读“ComeFrom”额外我打开了希望的标签,但问题是它会杀死所有其他活动。所以,如果有人知道更好(更清洁)的方法来做这个伎俩,请告诉我......

4 个答案:

答案 0 :(得分:5)

找到一个更容易(我认为)的答案:

    TabActivity上的
  1. 声明了一个public,static和self变量,并在onCreate方法上填充它。 F.e:

    public class TheActivity extends TabActivity {
        public static TheActivity self;
        ...
        @Override
        public void onCreate(Bundle savedInstanceState) {
            self=this;
    
  2. 当您想要更改应用上显示的活动时,
  3. 在选项卡中运行的任何活动上。你可以这样做:

    TabHost tabHost = TheActivity.self.getTabHost();
    tabHost.setCurrentTab(0);
    
  4. 为我工作好,希望为别人服务!

答案 1 :(得分:0)

你必须使用TabHost的“setCurrentTab(...)”。在我的一个项目中,我在主Activity(带有TabHost的那个)中创建了一个静态方法,命名为“swtichToTab(int tab)”。在我的子活动中(标签内的那些)可以调用“MainActivity.switchToTab()”来触发切换。

这可能不是最干净的方法,我相信你也可以使用广播意图实现这一点。

答案 2 :(得分:0)

您可以创建一个BroadcastReceiver,并使用该选项卡的索引作为额外

发送广播

答案 3 :(得分:0)

您可以对选项卡的内容使用视图而不是活动。这样,代码更简单,并且不使用尽可能多的内存。此外,您可以使用setCurrentTab(tabIndex)方法轻松切换视图。

我有一个简单的教程here。它有一个带有列表和地图视图的选项卡活动。单击列表中的项目时,活动将动态转到地图视图(使用setCurrentTab(tabIndex)方法)。您可以轻松修改此按钮以切换视图。