![](/img/trans.png)
[英]onActivityResult() and: failure delivering result resultinfo who=null request=1 result=-1 data=intent (has extras)
[英]onActivityResult() has Intent data as null after an Activity has finished
您好,我正在调用 startActivityForResult() 并尝试在 onAcvityResult() 方法中处理结果。 但是,Intent 数据为 null,结果为 RESULT_CANCELED。 我不知道为什么。
我正在创建活动:
startActivityForResult(new Intent(this, Class.class),LIST_RESULT);
然后在活动 class
@Override
public void onBackPressed() {
super.onBackPressed();
Intent data = new Intent();
Bundle bundle = new Bundle();
bundle.putParcelable("name", la);
data.putExtras(bundle);
if (getParent() == null) {
setResult(Activity.RESULT_OK, data);
} else {
getParent().setResult(Activity.RESULT_OK, data);
}
//finish();
}
finish() 没有效果。 事实上,我在 LogCat 中收到重复完成请求 HistoryRecord 的警告
我正在处理结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case(LIST_RESULT):
if(resultCode == Activity.RESULT_OK) {
previousList = data.getExtras();
}
break;
}
}
数据是 null,结果代码是 Action.RESULT_CANCELED。
任何想法为什么我没有通过? 在我设置它和阅读它之间有什么改变吗? 在返回结果的活动中,mParent 也是 null。
亚历克斯
亚历克斯,
我认为您想在onBackPressed()
方法中删除对finish()
的调用,并将其替换为对super.onBackPressed()
的调用。 我相信对super.onBackPressed()
的调用正在调用完成,而您永远没有机会调用setResult()
。
尝试...
@Override
public void onBackPressed() {
Intent data = new Intent();
Bundle bundle = new Bundle();
bundle.putParcelable("name", la);
data.putExtras(bundle);
if (getParent() == null) {
setResult(Activity.RESULT_OK, data);
} else {
getParent().setResult(Activity.RESULT_OK, data);
}
super.onBackPressed();
}
我查看了建议的解决方案和原始问题示例。 就我而言,上面的相同错误是重用相同的 requestCode 值。
在使用 startActivityForResult 时注意你的 requestCode,每个 Activity 调用应该有不同的 requestCode。
如果您重用或不注意您的 requestCode 对于每个 Activity 调用都是唯一的,您将收到以下错误消息:
“活动完成后,onActivityResult() 的 Intent 数据为 null”或“传递结果 ResultInfo 失败”。
为每个 startActivityForResult 使用变量定义,以确保清晰。 前任。
公共 static 最终 int INITIATIVE_REQUEST = 11
Use a unique number for each of startActivityForResult.
再次在多个活动上重复相同的 requestCode 将导致上述消息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.