2016-08-24 2 views
0

My mainActivity содержит 5 фрагментов, которые вы можете переключаться с помощью вкладок. Основной вкладкой, показанной в начале, является третья (вторая в середине). У меня есть кнопка в фрагменте # 1, которая открывает activityTwo. Что мне следует включить в метод onBackPressed в activityTwo, чтобы он вернул меня к mainActivity с выбранной вкладкой # 1. Я в настоящее время, но это открывает 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, проверьте, было ли оно нажато. Если да, перейдите на вкладку # 1 | если вы планируете иметь больше кнопок для других действий, вы можете использовать число в своем намерении, назначая его каждый раз, из какого фрагмента вы открыли каждое действие. –

ответ

2

Ваше первое действие должно по-прежнему находиться в стеке действий, поэтому вы не должны снова звонить startActivity. Вместо этого, вы можете использовать setResult передать значение обратно в первой деятельности:

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

Тогда из вашей первой деятельности, замените startActivity с startActivityForResult, с кодом запроса (любое целое число вы хотите, до тех пор, как он уникален):

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

Поэтому мне нужно установить результат в OK в onBackPressed, чтобы его можно было установить при возвращении к mainActivity. А также вместо startActivity, я должен использовать startActivityForResult с кодом намерения и запроса? –

+0

@ N.Park Да, это правильно. Я отредактировал свой ответ, чтобы сделать это более ясным. –

0

Я думаю, что вы используете просмотр пейджера, поэтому, пока вы возвращаетесь из действия 2, используйте viewPager.setCurrentItem (страница);

где страница будет вашей вкладкой no (в этом случае она будет 2, так как она начинается с 0). Надеюсь, это поможет, если не тогда, пожалуйста, уточните немного больше.

Смежные вопросы