1

我的 android 应用程序有一个带有 5 个标签的标签主机。问题是当我在第一个选项卡上使用 setCurrentTab(2).Android 启动活动时,它会在第三个选项卡上启动活动。我发现当我使用 TabHost 类的 addTab 方法时,它也会在第一个选项卡中启动活动。

    if (mCurrentTab == -1) {
        setCurrentTab(0); 
    }

我在stackoverflow中阅读了我的线程,例如:https ://stackoverflow.com/questions/9978231/android-when-i-put-setcurrenttab-for-tabhost-it-loads-the-first-added-tab-ac

原因我的客户要求,我无法重新排序选项卡。当 TabActivity 启动时,我只想在第三个选项卡中启动活动,我该怎么做?

4

4 回答 4

2

如果你想阻止加载你的片段,那么把你的放在 onVisible 中。使用此类UserVisibleHintFragment

它将帮助您防止提前加载。

于 2015-06-05T06:33:43.540 回答
0

您的问题并没有告诉我们您是如何构建标签的。如果您可以发布一些有关如何构建选项卡的代码,那么我们可能会为您提供更好的帮助。

下面是使用 TabHost 构建选项卡的简单方法。下面的tabHost.setCurrentTab(2);工作正常......

TabHost tabHost = getTabHost();

// Tab for About
TabSpec aboutspec = tabHost.newTabSpec("About");
aboutspec.setIndicator("About", getResources().getDrawable(R.drawable.icon_about_tab));
aboutspec.setContent(new Intent(this, AboutActivity.class));

// Tab for Contacts
TabSpec contactsspec = tabHost.newTabSpec("Contacts");
contactsspec.setIndicator("Contacts", getResources().getDrawable(R.drawable.icon_contacts_tab));
contactsspec.setContent(new Intent(this, ContactsActivity.class));

// Tab for Resources
TabSpec resourcesspec = tabHost.newTabSpec("Resources");
resourcesspec.setIndicator("Resources", getResources().getDrawable(R.drawable.icon_resources_tab));
resourcesspec.setContent(new Intent(this, ResourcesActivity.class));

// Adding all TabSpec to TabHost
tabHost.addTab(aboutspec);
tabHost.addTab(contactsspec);
tabHost.addTab(resourcesspec);

// set the current tab to Resources
tabHost.setCurrentTab(2);

希望这可以帮助您解决问题。

于 2013-05-22T05:55:30.913 回答
0

在此处输入图像描述

从我附加的图片中可以看出,当应用程序 android 启动时,它将从第三个选项卡启动活动,并在 android 设备中读取用户的邮件地址,然后将其发布到服务器。服务器将返回 user_id 后,我将 user_id 保存在应用程序内存。当用户单击第一个包含 webview 的活动的选项卡时,我将从应用程序内存中获取此 user_id,然后传递给 webview 的 url。如果第一个选项卡中的活动首先开始,则 user_id 将为空白。

于 2013-05-22T03:42:01.117 回答
0

使用setCurrentTab(2)addTab方法。最好在你的 onCreate 的最后一行使用它TabActivity

于 2013-05-22T02:59:31.207 回答