在kotlin中如何使用ViewModel和ViewModelProvider.AndroidViewModelFactory?

问题描述 投票:0回答:1

在我当前的项目中,我使用下一行:

mViewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)

例如,ViewModel,但在https://developer.android.com/reference/android/arch/lifecycle/ViewModelProviders.html#ViewModelProviders()建议使用ViewModelProvider.AndroidViewModelFactory,因为ViewModelProviders()在API级别1.1.0中被弃用。

为此目的的任何想法?

android kotlin viewmodel
1个回答
2
投票

ViewModelProviders只是一个带有静态方法的实用程序类,不需要实例化它(无论如何都没有实例方法),因此不应该关注被弃用的构造函数。

你使用它的方法是为你的用例调用它适当的of方法,传入FragmentActivity,然后在它返回的get上调用ViewModelProvider

val viewModel = ViewModelProviders.of(thisFragment).get(MyViewModel::class.java)

如果您没有在of方法的第二个参数中提供自己的工厂,则默认情况下将使用AndroidViewModelFactory。此实现可以创建没有构造函数参数的ViewModel子类,也可以创建扩展AndroidViewModel的子类,如下所示:

class MyViewModel(application: Application) : AndroidViewModel(application) {

    // use application

}
© www.soinside.com 2019 - 2024. All rights reserved.