6

我浏览了许多示例、问题和教程,但从未见过带有特定选项卡的活动启动(启动新意图)。我知道可以.setCurrentTab用来切换到一个选项卡,但这只能从父活动选项卡内部完成。如何从不同的活动启动一个活动中包含的特定选项卡?可能吗?如果是这样,那怎么办?

在我的代码中,在标准活动启动用户显示第一个选项卡,但我希望他转到第四个选项卡,以防他从另一个活动重定向。我的 TabHost 代码(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);

现在在另一个活动中:

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?
}
4

2 回答 2

12

setCurrentTab您需要在新活动的构造函数中自己处理它。

调用时,您应该在意图中添加其他值 -

Intent i = new Intent(this, MyTabActivity.class);
i.putExtra("FirstTab", 4);

在 MyTabActivity 的构造函数中 -

Intent i = getIntent();
int tabToOpen = i.getIntExtra("FirstTab", -1);
if (tabToOpen!=-1) {
    // Open the right tab
}
于 2012-06-20T17:01:29.577 回答
0

用你的标签位置试试这个

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); 开始活动(意图);

在 TabScreenActivity 的构造函数中

如果(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);
    }
于 2017-08-21T13:28:57.883 回答