我是靠谱客的博主 失眠板凳,这篇文章主要介绍Android Activity切换多个Fragment,现在分享给大家,希望可以做个参考。

背景

展示一个注销流程,就一个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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部