项目中需要通过Fragment接收Activity的回传数据,于是乎便想到了调用OnActivityResult去接收Activity的回调,但是试了多次之后发现并没了走OnActivityResult方法,于是百度了一下,说要重写FragmentActivity,如下
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
/*在这里,我们通过碎片管理器中的Tag,就是每个碎片的名称,来获取对应的fragment*/
Fragment f = fragmentManager.findFragmentByTag(curFragmentTag);
/*然后在碎片中调用重写的onActivityResult方法*/
f.onActivityResult(requestCode, resultCode, data);
}
当我加到BaseFragmentActivity中之后调试了下,发现还是没有走这个OnActivityResult, 大写的郁闷....
后来细细的回忆了一下Fragment和Activity的生命周期,发现我应该在主Activity力写OnActivityResult,而不是在FragmentActivity中, 顿时恍然大悟
要注意的地方是这里
OtherStationFragment os = new OtherStationFragment();
os.onActivityResult(requestCode, resultCode, data);
在加载Fragment的Activity中写完onActivityResult后,要传给Fragment,必须要把这个事件分给Fragment去处理,否则Activity就会在这里就已经拦截掉,
在Fragment里当然收不到onActivityResult回传了,这样就ok了