欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android中关于FragmentA嵌套FragmentB的问题

程序员文章站 2024-03-07 20:53:15
问题描述: 在项目中activity a中嵌套fragment b,fragment b中再嵌套fragment c,如图: 问题1:在点击activity a中主...

问题描述:

在项目中activity a中嵌套fragment b,fragment b中再嵌套fragment c,如图:

Android中关于FragmentA嵌套FragmentB的问题

问题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(); 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。