2016-08-24 13 views
0

私のmainActivityには、タブで切り替えることができる5つの断片が含まれています。開始時に表示されるメインタブは、3番目のタブ(中央のタブ)です。私はactivityTwoを開く#1の断片のボタンを持っています。選択したタブ#1を使用してmainActivityに戻すには、activityTwoのonBackPressedメソッドにどのように入れなければなりません。私は現在、これを持っているが、それはmainActivityを開き、メインタブ(#3)を示し特定のアクティビティから開くフラグメントを選択する方法は?

@Override 
public void onBackPressed() { 
    Intent intent = new Intent(this, MainActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
    startActivity(intent); 
    ActivityTwo.this.finish(); 
} 

どのように私はそれがタブ#1の代わりに、タブ#3を表示することができますか?

+0

インテントを使用し、 #3に設定する前にボタンが押されたかどうかをチェックするブーリアンである可能性があります。押されていればチェックします。あなたが他のアクティビティ用のボタンを増やす予定がある場合は、あなたが意図した数字を使用して、各アクティビティを開いたフラグメントを毎回割り当てることができます –

答えて

2

あなたの最初のアクティビティはまだアクティビティスタック上にあるはずなので、もう一度startActivityに電話をかけてはいけません。代わりに、あなたが戻ってあなたの最初の活動に値を渡すためにsetResultを使用することができます。

// Inside your second activity 
@Override 
public void onBackPressed() { 
    setResult(RESULT_OK); 
    finish(); 
} 

次に、あなたの最初の活動から、限り、それはユニークだとして、(リクエストコードで、startActivityForResultにしたい任意の整数をstartActivityを置き換えます):

startActivityForResult(intent, YOUR_REQUEST_CODE);

そしてonActivityResultをオーバーライド:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == YOUR_REQUEST_CODE) { 
     if (resultCode == RESULT_OK) { 
      // Code to select tab 1 here 
      // mTabLayout.getTabAt(0).select(); 
     } 
    } 
} 
+0

したがって、戻ったときにonBackPressedで結果をOKに設定する必要がありますmainActivityに移動します。 startActivityの代わりに、私はstartActivityForResultをintentと要求コードで使うべきですか? –

+0

@ N.Parkはい、そうです。私はそれをもっと明確にするために私の答えを編集しました。 –

0

あなたはビューページャを使用していると思いますので、アクティビティ2から戻るときは、viewPager.setCurrentItem(page)を使用してください。

ここで、ページはあなたのタブ番号になります(この場合は0になるので、2になります)。これが役に立ったら、もう少し明確にしてほしい。

関連する問題