gpt4 book ai didi

android - 如何使用 Hilt 将安全参数参数注入(inject) View 模型?

转载 作者:行者123 更新时间:2023-12-04 23:36:36 27 4
gpt4 key购买 nike

我发现了一个类似的问题 here .在撰写此问题时 there is only this answer avaliable ,这对我没有任何帮助,我也相信提出问题的人。
我检查了答案中链接的 repo,它通过在 viewmodel 中创建一个 init 方法并在 Activity/Fragment 中调用它来“解决”问题。
由于 View 模型已经被注入(inject),这个解决方案对我来说似乎并不理想,我想知道在使用 hilt 时是否还有其他可用的选项。

最佳答案

根据 this comment以及 AndroidX Hilt 1.0.0-alpha03 的发布, Hilt 支持采用 SavedStateHandle 的 ViewModel作为参数(与您的其他注入(inject)参数一起)。
这个SavedStateHandle会自动填充传递给 fragment 的参数(即,您从 requireArguments() 获得的参数和 Safe Args 读取的相同参数),而无需您做任何事情。
因此,在 ViewModel 的构造函数中,您可以立即从 SavedStateHandle 访问这些参数。 ,而无需手动将参数传递给您的 ViewModel。

@HiltViewModel
class MainViewModel @Inject constructor(
val userDataManager: UserDataManager,
savedStateHandle: SavedStateHandle
) : ViewModel() {
init {
// Use the same argName as in your navigation graph
val yourArgument: String = savedStateHandle["argName"]
// Now use that argument to load your data, etc.
}
}
feature request for Safe Args integration with SavedStateHandlealready fixed并将成为即将推出的导航 2.4.0-alpha01 的一部分发布。一旦发布,您就可以执行 MainFragmentArgs.fromSavedStateHandle(savedStateHandle) 之类的操作。得到相同的 Args您目前可以从 by navArgs() 获得的类(class)在您的 ViewModel 中。

关于android - 如何使用 Hilt 将安全参数参数注入(inject) View 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67350331/

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