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

Android:如何动态更改打开的选项卡,android,android-activity,tabs,dynamic,Android,Android Activity,Tabs,Dynamic,我有一个Android应用程序,它有四个选项卡(我使用一个带有TabHost和TabSpec的主TabActivity)。 在我的一个子活动(在选项卡中打开的活动)中,我需要打开一个选项卡,而不是单击选项卡标题,我不知道如何操作。 例如,我的活动中有一个按钮,当我单击它时,它会打开一个不同的选项卡。 就目前而言,这就是我所做的: Intent Intent=新的Intent(myActivity.this、myTabActivity.class) 意图。putExtra(“来自”,真) int

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

Intent Intent=新的Intent(myActivity.this、myTabActivity.class)
意图。putExtra(“来自”,真)
intent.setFlags(intent.FLAG\u ACTIVITY\u CLEAR\u TOP)
星触觉(意向)

然后在TabActivity中,如果我读到了“ComeFrom”额外的内容,我会打开想要的选项卡,但问题是它会杀死所有其他活动。所以,如果有人知道一种更好(更干净)的方法来做这个把戏,请告诉我…

你必须使用TabHost的“setCurrentTab(…)”来做这个。在我的一个项目中,我在主活动(带有TabHost的活动)中创建了一个名为“swtichtatab(int-tab)”的静态方法。在我的子活动中(选项卡内的子活动),只需调用“MainActivity.switchToTab()”即可触发切换

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

为此,您必须使用TabHost的“setCurrentTab(…)”。在我的一个项目中,我在主活动(带有TabHost的活动)中创建了一个名为“swtichtatab(int-tab)”的静态方法。在我的子活动中(选项卡内的子活动),只需调用“MainActivity.switchToTab()”即可触发切换


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

您可以创建一个广播接收器并发送一个广播,其中选项卡的索引为extra

您可以创建一个广播接收器并发送一个广播,其中选项卡的索引为extra

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


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

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

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

找到了一个更简单(我认为)的答案:

  • 在选项卡Activity上声明一个公共、静态和自变量,并在onCreate方法上填充它。F.e.:

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

    TabHost tabHost = TheActivity.self.getTabHost();
    tabHost.setCurrentTab(0);
    
  • 对我来说还行,希望为别人服务

    找到了一个更简单(我认为)的答案:

  • 在选项卡Activity上声明一个公共、静态和自变量,并在onCreate方法上填充它。F.e.:

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

    TabHost tabHost = TheActivity.self.getTabHost();
    tabHost.setCurrentTab(0);
    

  • 对我来说还行,希望为别人服务

    这也可能是解决这个问题的好方法,谢谢Zalakain!这也可能是解决这个问题的好方法,谢谢Zalakain!