gpt4 book ai didi

android - Android通过NavDirections争论(Safe-Args)将ViewModel发送到Fragment

转载 作者:行者123 更新时间:2023-12-02 13:28:44 24 4
gpt4 key购买 nike

我有一个具有以下架构的应用程序:

  • Navigator是一个自定义类,其中包含NavController
  • Cooridnator保存Navigator
  • Cooridnator告诉Navigator“启动”香料,并将ViewModel传递给它
  • Navigator要求NavController导航到NavDirections并提供所需的参数(使用Safe-Args)

  • 现在的问题是,如果我想将 ViewModel作为参数发送,则它必须是Parcelable及其所有基础类(这会使我的大部分代码变为Parcelable,这并不是真正需要的)。
    因此,有没有一种方法可以使所有内容均不可打包或使用Dagger? (不喜欢Dagger,因为它增加了代码的复杂性...)
    我可以在Fragment中有一个 lateinit字段并手动设置它,但是似乎无法从 NavDirections访问Fragment
    关于如何执行此操作的任何想法?

    最佳答案

    首先:安全参数传递的是“数据”,而 View 模型是逻辑。这意味着您的数据可能会随时间变化(其中一个例子可能会过时),但是只要viewmodel不变,逻辑就不会改变。因此,传递viewmodel本身对我没有意义-最好的办法是传递其状态快照,但是我怀疑那是您想要的。
    所以,是的,您应该使用DI,并且还有替代 Dagger 复杂性的方法。您可以尝试使用koin(因为我在您的标签列表中看到了kotlin),这里是https://shorturl.at/bflFL(中等),它可以提供一些基本的概述。您还可以尝试Hilt,它似乎是Dagger的简化替代品,适用于android world。

    关于android - Android通过NavDirections争论(Safe-Args)将ViewModel发送到Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62630576/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com