问题
I've gone through many examples, questions and tutorials but I've never seen an activity launch (launch a new intent) with a specific tab. I know that one can use .setCurrentTab
to switch to a tab, but this can be done only from inside the parent activity tab. How about launching a specific tab contained in one activity from a different activity? Is it possible? If so, then how?
In my code, on a standard activity launch user is shown the first tab, but I want him to go to the fourth tab in case he is being redirected from another activity. My TabHost code (MyTabActivity):
int tabIndex = 0;
mTabHost.addTab(mTabHost.newTabSpec("top10").setIndicator("Top 10").setContent(R.id.Top_10));
mTabHost.addTab(mTabHost.newTabSpec("billable").setIndicator("Billable").setContent(R.id.Billable));
mTabHost.addTab(mTabHost.newTabSpec("product").setIndicator("Product").setContent(R.id.Product));
mTabHost.addTab(mTabHost.newTabSpec("regular").setIndicator("Regular").setContent(R.id.General));
mTabHost.setCurrentTab(tabIndex);
Now in another activity:
public void gotoTab() {
//This will take me to the first tab
Intent i = new Intent(this, MyTabActivity.class);
startActivity(i);
finish();
//How to I make it take me to the fourth tab?
}
回答1:
You will need to handle it yourself with setCurrentTab
in the new activity's constructor.
While calling, you should put additional values in the intent -
Intent i = new Intent(this, MyTabActivity.class);
i.putExtra("FirstTab", 4);
And in constructor of MyTabActivity -
Intent i = getIntent();
int tabToOpen = i.getIntExtra("FirstTab", -1);
if (tabToOpen!=-1) {
// Open the right tab
}
回答2:
try this with your tab position
Intent intent = new Intent(MyActivity.this, TabScreenActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); intent.putExtra(ConstantString.ViewTab,1); startActivity(intent);
And in constructor of TabScreenActivity
if (getIntent() != null) {
tabPosition = getIntent().getIntExtra(ConstantString.ViewTab, tabPosition);
if (tabPosition == 1) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
viewPager.setCurrentItem(1, true);
}
}, 1000);
} else {
viewPager.setCurrentItem(0, true);
}
} else {
viewPager.setCurrentItem(0, true);
}
来源:https://stackoverflow.com/questions/11124372/how-to-launch-an-activity-with-a-specific-tab