在我的 Activity 中,我有一个包含 5 个项目的底部导航 View 。在每个项目上单击底部导航 View ,我正在加载一个 fragment 。假设我在第三个项目上并且我正在更改方向,然后重新创建 Activity 并显示所选的第一个项目。我通过在我的 Activity 中提供以下代码来避免这种情况。
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.clear()
outState.putInt("tabSelected", bottomNav.selectedItemId)
}
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
super.onRestoreInstanceState(savedInstanceState)
bottomNav.selectedItemId = savedInstanceState.getInt("tabSelected")
}
通过给出上面的代码,我成功地显示了所选的第三个项目。但这里的问题是 fragment 正在重新创建,而我的 savingInstanceState 在该 fragment 中始终为 null。我已经给了
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
retainInstance = true
}
在我的 fragment 中。
在这种情况下如何保存 fragment 的所有内容?
更新:我在 supportFragmentManager
中没有看到任何 fragment 虽然我已经给出了retainInstance = true
最佳答案
确保在 list 文件中为要加载 fragment 的 Activity 写入以下行。
android:configChanges="orientation|screenSize|screenLayout|keyboardHidden"
关于android - 底部导航 View 中加载的 fragment 在方向更改时变为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60850190/