android阻止第一个选项卡上的自动启动活动

时间:2013-05-22 02:53:42

标签: android android-tabhost

我的Android应用程序有一个带有5个标签的tabhost。 问题是当我在第一个选项卡上使用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 个答案:

答案 0 :(得分:2)

如果您想阻止加载您的片段,请将您置于onVisible中。使用此课程UserVisibleHintFragment

它可以帮助您防止提前装载。

答案 1 :(得分:0)

setCurrentTab(2)方法之后使用addTab。最好在TabActivity

的onCreate的最后一行使用它

答案 2 :(得分:0)

enter image description here

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

答案 3 :(得分: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);

希望这有助于您解决问题。