nir*_*vik 4 android android-intent android-fragments onactivityresult
我搜遍了所有关于它的类似帖子,但找不到解决方案!
我的情况是我有一个活动A,它持有一个fragment
,并且从那里fragment
我想开始一个新的Activity
B应该返回一些值fragment
.
在 fragment
startActivityForResult(mapIntent, ConstantsUtils.TOMAP_REQUEST_CODE);
Run Code Online (Sandbox Code Playgroud)
在Activity
B上,返回数据
Intent returnIntent = new Intent();
returnIntent.putExtra(SerializationConstants.isSearchSaved, mAbItemsShown.ordinal());
setResult (ConstantsUtils.SUCCESS_RETURN_CODE, returnIntent);
finish();
Run Code Online (Sandbox Code Playgroud)
在片段上
@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
}
}
}
Run Code Online (Sandbox Code Playgroud)
onActivityResult
从fragment
成功调用,有权requestCode
但resultCode
总是0,意图总是null
.
我onActivityResult
在Activity
A 下没有其他实现.
其实,我也试着开始activity
从fragment
与
getActivity().startActivityForResult(mapIntent, ConstantsUtils.TOMAP_REQUEST_CODE);
和实施onActivityResult
对Activity
A,但它发生的一样吧requestCode
,但错误resultCode
和intent
.
我正在使用Sherlock Action Bar
所以我fragment
是一个SherlockListFragment
所以我正在使用support library (r18)
.
你能帮助我吗?谢谢
ese*_*sov 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.
Run Code Online (Sandbox Code Playgroud)
获取此代码的常见原因是在新任务中启动活动(检查标记的意图和清单,这将导致新任务的启动).
此外,如果您有父活动,则应设置它的结果代码而不是设置其子项的结果代码(尝试getParent
并且如果它不是null,则设置它的结果代码).
小智 5
我花了一些时间找出原因。我的错误出super.onBackPressed()
在onBackPress()
方法中。
我调用finish()
了该方法。但是我认为super.onBackPressed()
它将finish()
自动调用,因此您将始终获得resultCode 0。因此,只需删除方法中的super.onBackPressed()
行即可onBackPressed()
。