如何使用 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?

如何使用 Python 和 Numpy 计算 r 平方?

R-Shiny:如何显示使用 saveHTML() 函数创建的动画和控件?

使用 R 和 plot.ly - 如何编写脚本将输出保存为网页

如何使用 dplyr 和 RPostgreSQL 将 r 连接到 redshift?

如何使用R连接Hive与Impala