6

私は多くの例、質問、チュートリアルを経験しましたが、特定のタブでのアクティビティの起動(新しいインテントの起動)を見たことがありません。タブに切り替えるために使用できることは知って.setCurrentTabいますが、これは親アクティビティタブ内からのみ行うことができます。あるアクティビティに含まれる特定のタブを別のアクティビティから起動するのはどうですか?出来ますか?もしそうなら、どのように?

私のコードでは、標準のアクティビティ起動ユーザーに最初のタブが表示されますが、別のアクティビティからリダイレクトされる場合に備えて、4番目のタブに移動してもらいたいと思います。My 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

タブの位置でこれを試してください

インテントインテント=newIntent(MyActivity.this、TabScreenActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); intent.putExtra(ConstantString.ViewTab、1); startActivity(intent);

そして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);
    }
于 2017-08-21T13:28:57.883 に答える