我的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?
答案 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开始)。希望这有帮助,如果没有,那么请澄清一点。