问题:
在Fragment中调用的fragment的startActivityForResult(),在fragment中的OnActivityResult()中直接就可以处理。我遇到的问题是在Fragment中有两次调用startActivityForResult(),第一次是自己调用的,直接在fragment的OnActivityResult()处理,但是第二次调用不是自己调用,是第三方的东西,不能改它的东西。那个activity返回的值并没有在fragment的OnActivityResult()中执行。
解决:
我的处理是将自己调用的startActivityForResult(),变成getActivity().startActivityForResult(),将这个请求变成是activity的,所以两个请求都是在fragment中调用activity的startActivity,
网上查的资料是说,在fragment中发起的getActivity().startActivityForResult(),当中的请求码,在activity中返回时会发生变化。因为我当时在fragment中的onActivityResult()中已经写好了代码,所以在Activity的onActivityResult中直接调用fragment中的onActivityResult()方法。问题解决了。
伪码:
Activity
onActivityResult() {
if(currFragment instatnce of MywantFragment) {
currFragment.onActivityResult();
}
}
Fragment
requestCode = 1;
getActivity().startActivityForResult();
onActivityResult() {
//正常处理代码
}