如何从特定活动中选择打开哪个片段?

时间:2016-08-24 13:01:07

标签: android android-fragments

我的mainActivity包含5个片段,您可以使用制表符切换这些片段。开始时显示的主要选项卡是第三个(中间的一个)。片段#1中有一个按钮,可以打开activityTwo。我应该在activityTwo中放入onBackPressed方法,以便它使用选定的选项卡#1将我带回mainActivity。我目前有这个,但它打开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?

2 个答案:

答案 0 :(得分:3)

您的第一项活动仍应位于活动堆栈上,因此您不应再次致电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();
         }
     }
 }

答案 1 :(得分:0)

我认为您正在使用视图寻呼机,因此当您从活动2返回时,请使用 viewPager.setCurrentItem(page);

其中页面将是您的选项卡号,(在这种情况下,它将是2,因为它从0开始)。希望这有帮助,如果没有,那么请澄清一点。