【Android Studio】fragment管理
add()
FragmentManager manager = getSupportFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.add(R.id.fragment_container, fragment, "fragment"); transaction.commit();
replace()
FragmentA fragment = new FragmentA(); getSupportFragmentManager().beginTransaction() .replace(R.id.XXX, fragment,"fragment") .commit();
add
和replace
的区别是:
①add
是往container
容器里堆加fragment
View
;replace
是将container
容器里之前添加的View
全部清除,然后再添加当前fragment
View
一定要记住,replace
清除的是container
的视图,而不是fragment
实例, remove
移除的才是fragment
实例
②add
后期可以使用show
,hide
操作,但是replace
不可以,原因见①
③使用add
,回滚时,fragment
不会重新加载,曾经的操作痕迹还存在,使用replace
回滚时,之前的fragment
会重新加载,原因见①
使用add
的时候还有一点需要注意的是,视图重叠的问题,记得设置背景色add
和 replace
千万不要混合使用,否则会出错
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了