美文网首页
关于startActivityForResult()对应返回的r

关于startActivityForResult()对应返回的r

作者: 沐小木沐 | 来源:发表于2020-06-07 19:14 被阅读0次

在通过Fragment直接调用startActivityForResult()启动Activity B,然后返回回来的时候,出现了请求码是类似于46395这样的。对于这个问题,网上基本都是说这是因为Fragment的机制,只要切换成getActivity().startActivityForResult()就可以解决问题。但是,如果是基于ReactNativeActivity创建的Fragment,这样就无法生效了。所以,我这边的一种解决方案是直接通过父 Activity来调用。

  1. 在目标 Fragment里面补充这两个方法
private void startActivityForResultByOwn(int requestCode, Intent intent) {
    Activity act = getActivity();
    if(act instanceof ParentActivity) {// 使用Fragment对应的父Activity
        ParentActivity a= (ParentActivity) act;
        a.startActivityForResultByOwn(intent, requestCode);
    }
}
...

public void onResult4Activity(int requestCode, int resultCode, @Nullable Intent data) {
        //activity 来回调结果
}

2.然后在父Activity里面引用回调

private void startActivityForResultByOwn(int requestCode, Intent intent) {
     startActivityForResult(intent, requestCode);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
     super.onActivityResult(requestCode, resultCode, data);
     if (mFragment instanceof ChildFragment ) { //这里比对目标fragment
         ChildFragment  f = (ChildFragment ) mFragment;
         f.onResult4Activity(requestCode, resultCode, data);
     }
}

这只是其中的一种比较简单的解决方案,如果有更好的,麻烦告诉我哈 ^ _ ^


每多走一步,就与梦想更近一步。

相关文章

网友评论

      本文标题:关于startActivityForResult()对应返回的r

      本文链接:https://www.haomeiwen.com/subject/oxxhtktx.html