Как запустить активность с определенной вкладкой?

Я просмотрел много примеров, вопросов и руководств, но я никогда не видел запуска активности (запуска нового намерения) с определенной вкладкой. Я знаю, что можно использовать .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?
}

person Harsh    schedule 20.06.2012    source источник


Ответы (2)


Вам нужно будет справиться с этим самостоятельно с помощью 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
}
person KalEl    schedule 20.06.2012

попробуйте это с вашей позицией табуляции

Намерение намерение = новое намерение (MyActivity.this, TabScreenActivity.class); намерение.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); намерение.putExtra (ConstantString.ViewTab, 1); startActivity(намерение);

И в конструкторе TabScreenActivity

если (getIntent() != ноль) {

        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);
    }
person Saurabh Gaddelpalliwar    schedule 21.08.2017