【android】fragment重叠的解决
程序员文章站
2022-09-06 10:02:19
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar...
关于fragment重叠的解决在网上已有许多资料,但是因为项目里给的框架的代码是在MainActivity里就把fragment初始化了,我也懒得大幅度去修改,这里来说一下我投机取巧的做法:
用一个成员变量isDetory记录是否被activity被摧毁了
if (savedInstanceState != null&&mContent==null)
{
isDestory=true
}
这里是我切换fragment的代码,第一个参数是fragment,第二个是fragment的名字,第三个FrameLayout的id。
实际上就是用hashmap,保存他们的信息,避免重复add,mContent保存当前的fragment,mContent为空时就直接add不用hide。
当我们知道activity被摧毁了,isDestory为true,用户点击了别的tab标签,我们就直接replace它,将信息保存到hashmap,isDestory变为false。
fun switchFragment(fragment: Fragment?, simpleName: String, id: Int) {
val manager = supportFragmentManager
val mTransaction = manager.beginTransaction()
if (fragment == null) {
return
}
if (isDestory==true){
fragments.put(simpleName, simpleName)
mTransaction.replace(id, fragment, simpleName)
isDestory==false
}else{
if (mContent == null) {
fragments.put(simpleName, simpleName)
mTransaction.add(id, fragment, simpleName)
} else {
if (fragments.containsKey(simpleName)) {
mTransaction.hide(mContent!!).show(fragment)
} else {
fragments.put(simpleName, simpleName)
mTransaction.hide(mContent!!).add(id, fragment, simpleName)
}
}}
mContent = fragment
mTransaction.commitAllowingStateLoss()
}
屁话说了这么多,其实就是用了replace而已,我却走了许多弯路,看来得认真了解每一行代码的意思。
本文地址:https://blog.csdn.net/ophlia_qer/article/details/107468755
上一篇: AE怎么制作文字摆荡的动画?
下一篇: 火牛上传的视频怎么删除?
推荐阅读
-
详解Android activity与fragment之间的通信交互
-
Android Activity切换(跳转)时出现黑屏的解决方法 分享
-
Android中ImageView无法居中的问题解决方法
-
Android 中 Fragment的使用大全
-
Android--解决图片保存到相册显示1970年1月1日 8:00的问题
-
Android Studio启动报错Java 1.8 or later is required的解决方法
-
android studio错误: 常量字符串过长的解决方式
-
解决Android Studio突然不显示logcat日志的问题
-
Mac中Eclipse连不上Android手机的解决方法
-
Android中fragment嵌套fragment问题解决方法