我搜遍了所有关于它的类似帖子,但找不到解决方案!
我的情况是我有一个活动A,其中包含fragment
,并且fragment
我希望启动一个新的Activity
B,它应该返回一些值{{1} }}
在fragment
fragment
在startActivityForResult(mapIntent, ConstantsUtils.TOMAP_REQUEST_CODE);
B上,返回数据
Activity
片段
Intent returnIntent = new Intent();
returnIntent.putExtra(SerializationConstants.isSearchSaved, mAbItemsShown.ordinal());
setResult (ConstantsUtils.SUCCESS_RETURN_CODE, returnIntent);
finish();
成功调用@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
switch (requestCode) {
case ConstantsUtils.TOMAP_REQUEST_CODE:
if (resultCode == ConstantsUtils.SUCCESS_RETURN_CODE) {
//do some stuff
}
}
}
中的{p> onActivityResult
,右fragment
但requestCode
始终为0且意图始终为resultCode
。
null
A。
onActivityResult
实施
事实上,我也尝试从Activity
启动activity
fragment
并在getActivity().startActivityForResult(mapIntent, ConstantsUtils.TOMAP_REQUEST_CODE);
A上实施onActivityResult
,但它恰好相同,正确Activity
但错误requestCode
和resultCode
。
我正在使用intent
,因此Sherlock Action Bar
为fragment
,因此我使用的是SherlockListFragment
。
答案 0 :(得分:11)
结果代码0为RESULT_CANCELLED
。
The resultCode will be RESULT_CANCELED if the activity explicitly returned that, didn't return any result, or crashed during its operation.
获取此代码的常见原因是在新任务中启动活动(检查标记的意图和清单,这将导致新任务的开始)。
此外,如果你有一个父活动,你应该设置它的结果代码,而不是设置它的子项的结果代码(尝试getParent
,如果它不是null,则设置它的结果代码)。< / p>
答案 1 :(得分:4)
我花了一些时间找出原因。我的错误是super.onBackPressed()
方法中的onBackPress()
。
我在方法中调用了finish()
。但我认为super.onBackPressed()
会自动调用finish()
,因此您将始终获得 resultCode 0 。
因此,只需删除super.onBackPressed()
方法中的onBackPressed()
行。