环境
Android Studio 4.2.1 编译版本 30
问题描述
使用 FragmentContainerView 和 BottomNavigationView 作为Tab 切换架构,点击 tab 时,当前Fragment页面也会重新刷新,导致页面会出现闪烁,而且需要特别处理刷新。
问题分析
通过 Android Studio 模板新建的项目,运行发现问题同样存在。查找网络,也发现有反映同样问题,并给出了处理。
通过谷歌提供的示例 NavigationAdvancedSample 则没有出现同样情况。
问题解决
根据网络上博文表示后续版本可能会解决这个问题,比对了依赖文件,发现我是用的依赖是:
implementation 'androidx.navigation:navigation-fragment:2.3.5'
implementation 'androidx.navigation:navigation-ui:2.3.5'
implementation 'androidx.navigation:navigation-runtime:2.3.5'
版本为 2.3.5.
而谷歌示例版本用的是 2.4.0-alpha01.
更新依赖后,问题解决。
更新
1、2021-12-30
有留言表示更新依赖后,仍然会重建。这是正常的,具体请参见参考文献2。
我这篇博客只是说明,原版本 Fragment 重建会导致页面闪烁,而新版本则解决了闪烁问题。
参考文献
1 谷歌官方Github 库中的示例 提供了很好的学习范本,值得推荐
2 Flywith24 的关于多返回栈的博文,详细讲解了多返回栈的处理