gpt4 book ai didi

android - 通过 ViewModelProvider 获取 ViewModel 实例

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

ViewModelProviders 已弃用

ViewModelProviders.of(this).get(MyViewModel::Class.java)

正如其他 StackOverflow 答案所建议的那样,This is not being found:

ViewModelProvider(this).get(MyViewModel::class.java)

onCleared() 没有被调用似乎有问题:

ViewModelProvider.NewInstanceFactory().create(MainViewModel::class.java)

此外,我不想使用 KTX-Extensions by viewmodel()

最后一个选项是:

ViewModelProvider(this, myViewModelFactory).get(MyViewModel::class.java)

它需要一个 ViewModelFactory,我还没有想出如何实现和返回实例:

class ViewModelFactory : ViewModelProvider.Factory {

override fun <T : ViewModel?> create(modelClass: Class<T>): T {
...
}

}

很长一段时间以来,我一直使用 Koin 注入(inject)我的 ViewModel,但不使用它会导致获取 ViewModel 的实例变得困惑。

有什么方法可以在 API 级别 30 中轻松获取 ViewModel 的实例吗?

最佳答案

This is completely gone from API 30

“API 30”是指Android SDK框架版本。 ViewModelProviders 从未在框架中。 ViewModelProviders 仍然存在 in lifecycle-extensionsis still documented .您是正确的,它已被弃用。

This is also gone

不,不是。可用in lifecycle-viewmodelis still documented .

Is there any way to get an instance of ViewModel easily in API Level 30?

使用 ViewModelProvider(this).get(MyViewModel::class.java)(您的第二个代码 fragment )。参见 this Java example (在 Kotlin 中,我使用 Google 或 Koin 的属性委托(delegate))。

关于android - 通过 ViewModelProvider 获取 ViewModel 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62395009/

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