onActivityResult 在 setResult 之后没有被调用
onActivityResult not being called after setResult
我有一个 activity A - 它在 Viewpager 中包含 3 个片段。片段号 1,是新闻文章列表,当用户从列表中选择新闻文章时,activityB 启动并显示所选文章的详细信息(标题,body,评论)。我希望用户能够通过使用选项菜单选择 activity A 他想要 return 的哪个片段。
Activity答:
@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;
}
}
Activity乙:
@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);
}
}
你不应该从 activity B 调用 startActivityForResult。从 A 开始,你通过调用 startActivityForResult 然后从 B 开始 activity B足以设置结果并完成 activity
Activity答:
Intent intent = new Intent();
...
startActivityForResult(intent, 0);
Activity乙:
case R.id.menu_noticias:
intent.putExtra("menu", 0);
setResult(RESULT_OK, intent);
finish();
return true;
然后 activity 答:
@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;
}
}
}
我有一个 activity A - 它在 Viewpager 中包含 3 个片段。片段号 1,是新闻文章列表,当用户从列表中选择新闻文章时,activityB 启动并显示所选文章的详细信息(标题,body,评论)。我希望用户能够通过使用选项菜单选择 activity A 他想要 return 的哪个片段。
Activity答:
@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;
}
}
Activity乙:
@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);
}
}
你不应该从 activity B 调用 startActivityForResult。从 A 开始,你通过调用 startActivityForResult 然后从 B 开始 activity B足以设置结果并完成 activity
Activity答:
Intent intent = new Intent();
...
startActivityForResult(intent, 0);
Activity乙:
case R.id.menu_noticias:
intent.putExtra("menu", 0);
setResult(RESULT_OK, intent);
finish();
return true;
然后 activity 答:
@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;
}
}
}