Android中fragment嵌套fragment问题解决方法
都说fragment好用,duang~~,又遇到问题了,记录一下,分享给遇到这个问题的同学!
1.fragment嵌套fragment时出现getActivity()为null
activityA嵌套fragmentB,B嵌套fragmentC,C跳转到activityD,当activityD被finish掉之后,C中容易爆出getActivity为空.如果你的activity被回收了,那你需要在bundle中保存一下fragment信息,我的解决方法:fragment实例化之后会到activity的fragmentManager中注册一下,这个动作封装在fragment中的onAttach(Activityactivity)方法中,可以直接在onAttach(Activityactivity)方法中去赋值
2.fragment嵌套fragment时没有执行子fragment的onActivityResult方法
activityA嵌套fragmentB,B嵌套fragmentC,C通过startActivityForResult跳转到activityD,当activityD被finish掉之后,没有执行C的onActivityResult
其实这个问题也不是每个人都会遇到,当你的activityA和FragmentB不重写onActivityResult方法,可能就不会出现这个问题,但是我的activityA重写了onActivityResult方法,所以当activityD被销毁的时候,直接去执行activity的onActivityResult,其实这个问题也很简单,只是遇到的时候可能想不到,解决方案就是在Activity中的onActivityResult方法中加入super.onActivityResult(requestCode,resultCode,data);一切都ok了
Activity的onActivityResult方法:
@Override protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){ super.onActivityResult(requestCode,resultCode,data); ... }
fragment的onActivityResult方法:
publicvoidonActivityResult(intrequestCode,intresultCode,Intentdata){ }
当然有些特殊情况也不走onActivityResult方法,遇到了也不要烦躁,从Activity中的onActivityResult方法中手动调用fragment的方法,把相应的数据传递过去
如果你有更好的方法,互相交流哦!