如何使用 popUpToSaveState 和 restoreState 在导航组件 Android Kotlin 中保存和保持状态?
Posted
技术标签:
【中文标题】如何使用 popUpToSaveState 和 restoreState 在导航组件 Android Kotlin 中保存和保持状态?【英文标题】:How to use popUpToSaveState and restoreState to save and keep state in Navigation Component Android Kotlin? 【发布时间】:2021-08-26 04:07:48 【问题描述】:我正在使用Navigation Component 处理导航,但是当使用popBackStack()
或onBackPressed()
返回上一个片段时,我的onViewCreated
再次使用api 在片段中调用并设置视图。
由于Navigation Component 2.4 推出了新功能(popUpToSaveState and restoreState),我想使用它。请告诉我怎么做?
【问题讨论】:
你还是需要使用Fragment APIs to save your state;onViewCreated()
仍会被调用。
@reza_khalafi 你解决了吗?
【参考方案1】:
你应该使用viewModel来解决这个问题,viewmodel不会再次调用并在viewmodel中编写你的api调用代码。
Class TestViewModel:ViewModel()
init
apiReqest()
private fun apiReqest()
// write here your api request code and observe it on view using observer
【讨论】:
【参考方案2】:即使您保存状态 onViewCreated 也会被调用。
你需要用来保存状态。
override fun onSaveInstanceState(outState: Bundle)
super.onSaveInstanceState(outState)
并在 onCreate 上恢复它。
【讨论】:
以上是关于如何使用 popUpToSaveState 和 restoreState 在导航组件 Android Kotlin 中保存和保持状态?的主要内容,如果未能解决你的问题,请参考以下文章
PHP Regex:如何在不使用 [\r\n] 的情况下匹配 \r 和 \n?
R-Shiny:如何显示使用 saveHTML() 函数创建的动画和控件?
使用 R 和 plot.ly - 如何编写脚本将输出保存为网页