【问题标题】:Save Fragment data when switch to another fragment using Navigation使用导航切换到另一个片段时保存片段数据
【发布时间】:2020-03-23 07:36:53
【问题描述】:

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

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

所以我想知道我可以做些什么来保存日期并在我切换回来时恢复它们

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

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

所以我不知道该怎么办?谢谢!

【问题讨论】:

    标签: java android android-fragments kotlin


    【解决方案1】:

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

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

    【讨论】:

    • 这是我写的:mViewModel = ViewModelProviders.of(this).get(MyViewModel::class.java);
    • @YanZhuang 尝试将“this”更改为“activity as ViewModelStoreOwner”作为参数
    • 我试过了。但事实证明,使用我的 BottomNavigationController,当我切换片段时,它实际上被完全销毁(调用了 onDestroy())。所以如果一切都被破坏了,我不知道如何保存状态
    猜你喜欢
    • 2015-10-28
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 2013-05-12
    • 2013-12-19
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    相关资源
    最近更新 更多