使用导航切换到另一个片段时保存片段数据

时间:2020-03-23 07:36:53

标签: java android android-fragments kotlin

我刚开始我的第一个Android项目。我的应用程序包含两个与导航控制器连接的片段。

就目前而言,我的第一个片段只有两个EditText。但是,我意识到,当我切换到另一个片段并向后浏览时,输入的文本已被清除。

所以我想知道如何保存日期并在将其切换回原位时将其恢复

我已经尝试按照大多数人的建议将它们保存在 onSaveInstanceState()中,但是,它不起作用。因此,我做了一些测试,结果发现在切换片段时甚至没有调用 onSaveInstanceState()。相反,会调用 onDestroy() onPause(),人们不建议保存这些数据

我也尝试过使用ViewModel保存数据,但是当我切换回原始Fragment时,保存到ViewModel中的数据似乎也消失了。

所以我不确定该怎么办?谢谢!

1 个答案:

答案 0 :(得分:1)

您应该使用ViewModel,在Fragment.onViewCreated()方法内部通过Activity而不是Fragment创建ViewModel

val myViewModel = ViewModelProvider(activity as ViewModelStoreOwner).get(MyViewModel::class.java)