一个fragment中嵌套两个fragment的布局怎么写
答案:2 悬赏:70 手机版
解决时间 2021-03-18 12:49
- 提问者网友:蔚蓝的太阳
- 2021-03-17 18:08
一个fragment中嵌套两个fragment的布局怎么写
最佳答案
- 五星知识达人网友:何以畏孤独
- 2021-03-17 18:23
1.fragment嵌套fragment时出现getActivity()为null
activity A嵌套fragment B,B嵌套fragment C,C跳转到activity D,当activity D被finish掉之后,C中容易爆出getActivity为空.如果你的activity被回收了,那你需要在bundle中保存一下fragment信息,我的解决方法:fragment实例化之后会到activity的fragmentManager中注册一下,这个动作封装在fragment中的onAttach(Activity activity)方法中,可以直接在onAttach(Activity activity)方法中去赋值
2.fragment嵌套fragment时没有执行子fragment的onActivityResult方法
activity A嵌套fragment B,B嵌套fragment C,C通过startActivityForResult跳转到activity D,当activity D被finish掉之后,没有执行C的onActivityResult
其实这个问题也不是每个人都会遇到,当activity A和Fragment B不重写onActivityResult方法,可能就不会出现这个问题,但是我的activity A重写了onActivityResult方法,所以当activity D被销毁的时候,直接去执行activity 的onActivityResult,其实这个问题也很简单,只是遇到的时候可能想不到,解决方案就是在Activity中的onActivityResult方法中加入super.onActivityResult(requestCode, resultCode, data);一切都ok了
Activity的onActivityResult方法:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
fragment的onActivityResult方法:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
activity A嵌套fragment B,B嵌套fragment C,C跳转到activity D,当activity D被finish掉之后,C中容易爆出getActivity为空.如果你的activity被回收了,那你需要在bundle中保存一下fragment信息,我的解决方法:fragment实例化之后会到activity的fragmentManager中注册一下,这个动作封装在fragment中的onAttach(Activity activity)方法中,可以直接在onAttach(Activity activity)方法中去赋值
2.fragment嵌套fragment时没有执行子fragment的onActivityResult方法
activity A嵌套fragment B,B嵌套fragment C,C通过startActivityForResult跳转到activity D,当activity D被finish掉之后,没有执行C的onActivityResult
其实这个问题也不是每个人都会遇到,当activity A和Fragment B不重写onActivityResult方法,可能就不会出现这个问题,但是我的activity A重写了onActivityResult方法,所以当activity D被销毁的时候,直接去执行activity 的onActivityResult,其实这个问题也很简单,只是遇到的时候可能想不到,解决方案就是在Activity中的onActivityResult方法中加入super.onActivityResult(requestCode, resultCode, data);一切都ok了
Activity的onActivityResult方法:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
fragment的onActivityResult方法:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
全部回答
- 1楼网友:逐風
- 2021-03-17 18:47
fragment1 class one对应的布局文件 one.xml
fragment1对应的类class one:
public class one extends fragment {
private list list = new arraylist();
@override
public view oncreateview(layoutinflater inflater, viewgroup container,
bundle savedinstancestate) {
view view = inflater.inflate(r.layout.one, null);
return view;
}
@override
public void onactivitycreated(bundle savedinstancestate) {
super.onactivitycreated(savedinstancestate);
viewpager vp = (viewpager) getview().findviewbyid(r.id.one_vp);
list.add(new fragone());//子fragment
list.add(new fragtwo());//子fragment
vpadapter adapter = new vpadapter(getchildfragmentmanager(), list);
vp.setadapter(adapter);
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯