问题描述:
在项目中activity a中嵌套fragment b,fragment b中再嵌套fragment c,如图:
问题1:在点击activity a中主菜单1进行切换时,报错fragment c already added。
解决:在framgent b中添加fragment c 调用add()时先判断fragmentc.isadded()
fragmentmanager fm=getactivity().getsupportfragmentmanager(); fragmenttransaction ft=fm.begintransaction(); if(!sub1fragment.isadded()){ ft.add(r.id.rl_fragment_container, sub1fragment).commit(); }
问题2:修改后发现,fragment c布局添加失败,同时切换主菜单2时,报错。
解决:这是fragment的嵌套问题。fragmentb中的嵌套不能再用getactivity().getsupportfragmentmanager();要用getchildfragmentmanager();
即上面代码应改为:
fragmentmanager fm=getchildfragmentmanager(); fragmenttransaction ft=fm.begintransaction(); if(!sub1fragment.isadded()){ ft.add(r.id.rl_fragment_container, sub1fragment).commit(); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。
如对本文有疑问, 点击进行留言回复!!
Android SDK Manager 不知为什么突然打不开了?看这里
监听Android系统发出的插入SD卡并且已正确安装(识别)时发出的广播
RecyclerView三种常用效果的实现方法-android-kotlin
Android Studio app启动错误 Error running :Default Activity not found
网友评论