【发布时间】:2018-01-24 13:22:32
【问题描述】:
开始活动以获得结果:
Intent intent = new Intent(MainActivity.this, DetailsActivity.class);
startActivityForResult(intent,EVENT_DETAILS_REQUEST);
在我的 DetailsActivity 中,设置可用于主要活动的结果和额外内容:
@Override
public void onBackPressed()
{
Intent resultIntent = new Intent();
resultIntent.putExtra("isEdited",isEdited);
setResult(RESULT_OK,resultIntent);
finish();
}
最后,在 MainActivity 中:
@Override
protected void onActivityResult(int requestCode, int resultCode, @NonNull Intent data)
{
switch(requestCode)
{
......
case EVENT_DETAILS_REQUEST:
boolean isEdited = data.getBooleanExtra("isEdited", false);
.......
break;
}
}
只要用户使用“返回”硬件(或系统导航栏)按钮关闭 DetailsActivity 就可以了。如果用户点击活动顶部的“返回”箭头关闭活动,onBackPressed 将不会被调用,onActivityResult 数据将为空。
我曾尝试使用onPause、onStop、onFinish 而不是onBackPressed 来管理它的工作,但我得到data for onActivityResult 始终为空。
解决我的问题的正确方法是什么?
【问题讨论】:
-
在清单文件中使用 android:launchMode="singleTop"..
-
它已经在那里了。
-
请粘贴您的 onOptionsItemSelected 代码。
-
它不存在。我应该在
onOptionsItemSelected中捕获返回箭头吗?要检查什么 id? -
见下面 Manoj 的回答。
标签: java android onactivityresult onpause onbackpressed