概述
背景
展示一个注销流程,就一个Activity + 多个fragment实现,同一个viewModel 数据也可同步,但是希望回退再次进入要重新初始化页面不要保留之前的。
实现说明
Activity 采取 下面方式添加Fragment:
if (frag== null) {
frag = MyFragment()
}
}
replace(R.id.logout_content, frag) // 每次都会销毁进入的时候再重建,生命周期会重新走
addToBackStack(null) // 需要有,方便返回需要
fragment 有多个,需有个BaseFragment .在里面获取viewModel 记得传Activity,别传this 因为fragment 要和activity的viewModel同一个
问题
1、每个fragment 的本地变量值修改了,再次进入的时候还是修改后的值,但是证明被销毁了,生命周期都会重新执行。原因是在Activity:
if (frag== null) {
frag = MyFragment()
}
}
这个类不会空的,还是之前的实例, 所以初始化的变量值,修改了就一直是修改的
2、监听了LiveData 每次进来会走一次监听会得到销毁前数据,所以需要在ondeStroy()把 liveData.value = null 并且在监听 - ->判空处理。
最后
以上就是失眠板凳为你收集整理的Android Activity切换多个Fragment的全部内容,希望文章能够帮你解决Android Activity切换多个Fragment所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复