其他分享
首页 > 其他分享> > android – 片段startActivityForResult总是在回调onActivityResult上返回resultCode 0和intent null

android – 片段startActivityForResult总是在回调onActivityResult上返回resultCode 0和intent null

作者:互联网

我搜遍了所有关于它的类似帖子,但找不到解决方案!

我的情况是我有一个活动A,它包含一个片段,我想从该片段开始一个新的活动B,它应该向片段返回一些值.

在片段上

startActivityForResult(mapIntent, ConstantsUtils.TOMAP_REQUEST_CODE);

在活动B上,返回数据

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 
            }
    }
}

使用正确的requestCode成功调用片段中的onActivityResult,但resultCode始终为0,而​​intent始终为null.

我在Activity A下没有其他onActivityResult实现.

事实上,我也尝试从片段开始活动
getActivity().startActivityForResult(mapIntent,ConstantsUtils.TOMAP_REQUEST_CODE);
并在Activity A上实现onActivityResult,但它发生相同,正确的requestCode但错误的resultCode和intent.

我正在使用Sherlock Action Bar,所以我的片段是SherlockListFragment所以我正在使用支持库(r18).

你能帮助我吗?谢谢

解决方法:

结果代码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,则设置它的结果代码).

标签:android,android-intent,android-fragments,onactivityresult
来源: https://codeday.me/bug/20190713/1454600.html