我有一个活动A - 它在Viewpager中容纳3个片段。片段编号1是新闻文章列表,当用户从列表中选择新闻文章时,活动B开始并显示所选文章的详细信息(标题,正文,评论)。我希望用户能够通过使用选项菜单选择他想要返回的活动片段。
活动A:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (resultCode) {
case 0:
mPager.setCurrentItem(0);
break;
case 1:
mPager.setCurrentItem(1);
break;
case 2:
mPager.setCurrentItem(2);
break;
}
}
活动B:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Intent intent = new Intent(this, MainActivity.class);
switch (item.getItemId()) {
case R.id.menu_noticias:
//startActivityForResult(intent, 0);
setResult(0, intent);
finish();
return true;
case R.id.menu_contactos:
//startActivityForResult(intent, 1);
setResult(1, intent);
finish();
return true;
case R.id.menu_cumples:
//startActivityForResult(intent, 2);
setResult(2, intent);
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
答案 0 :(得分:2)
你不应该从活动B调用startActivityForResult。从A开始,你通过调用startActivityForResult启动活动B,然后从B启动它足以设置结果并完成活动
活动A:
Intent intent = new Intent();
...
startActivityForResult(intent, 0);
活动B:
case R.id.menu_noticias:
intent.putExtra("menu", 0);
setResult(RESULT_OK, intent);
finish();
return true;
然后是活动A:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
int menu = data.getExtraInt("menu");
switch (menu) {
case 0:
mPager.setCurrentItem(0);
break;
}
}
}