Android中关于FragmentA嵌套FragmentB的问题
问题描述:
在项目中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 Studio 3.x版本 的输入法遇到的坑及解决方案
前些天把AndroidStudio从2.3.3升级到3.0,遇到了不少坑,其中一个巨坑就是输入中文不提示的问题,下面给大家分享Android Studio 3.x版本的输入法遇到的坑及解决方案,一起看看吧2017-11-11Android那两个你碰不到但是很重要的类之ViewRootImpl
这两个类就是ActivityThread和ViewRootImpl,之所以说碰不到是因为我们无法通过正常的方式引用这两个类或者其类的对象,本文就尝试从几个我们经常接触的方面先谈谈ViewRootImpl,感兴趣的可以参考阅读下2023-05-05浅谈Android Studio 3.0 工具新特性的使用 Android Profiler 、Device File
这篇文章主要介绍了浅谈Android Studio 3.0 工具新特性的使用 Android Profiler 、Device File Explorer的相关资料,需要的朋友可以参考下2017-11-11Android源码探究之BaseDexClassLoader的使用
今天解决一个插件化问题的时候,竟然发现SO没有正常加载,很怪异,最终排查下来发现竟然是参数传入错误导致的。这就扯到了本文的标题上了,BaseDexClassLoader中的4个参数该如何传入,传入的又是什么呢2022-08-08Android中Glide获取图片Path、Bitmap用法详解
这篇文章主要介绍了Android中Glide获取图片Path、Bitmap用法以及代码分析,需要的朋友们参考一下吧。2017-12-12
最新评论