我的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启动时,我只想在第三个选项卡中启动活动,我该怎么做?
答案 0 :(得分:2)
如果您想阻止加载您的片段,请将您置于onVisible中。使用此课程UserVisibleHintFragment
它可以帮助您防止提前装载。
答案 1 :(得分:0)
在setCurrentTab(2)
方法之后使用addTab
。最好在TabActivity
答案 2 :(得分:0)
从你附上的图片中可以看到,当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);
希望这有助于您解决问题。