kotlin 中的 Android ViewModelProviderFactory

标签 android kotlin viewmodel android-architecture-components

我正在试验 Architecture Components来自谷歌。具体来说,我想实现一个 ViewModelProvider.Factory创建一个带有构造函数参数的 ViewModel,如下所示:

class MyFactory(val handler: Handler) : ViewModelProvider.Factory {
    override fun <T : ViewModel?> create(modelClass: Class<T>?): T {
        return MyViewModel(handler) as T
    }
}

我的 ViewModel 如下所示:

class MyViewModel(val handler: Handler) : ViewModel() 

任何人都知道最后如何避免讨厌的 Actor 阵容:

return MyViewModel(handler) as T

最佳答案

你可以写:

class MyFactory(val handler: Handler) : ViewModelProvider.Factory {
    override fun <T : ViewModel> create(modelClass: Class<T>): T {
        return modelClass.getConstructor(Handler::class.java).newInstance(handler)
    }
}

这适用于任何接受 Handler 作为构造函数参数的类,如果该类没有正确的构造函数,则会抛出 NoSuchMethodException

关于kotlin 中的 Android ViewModelProviderFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45514723/

相关文章:

java - 每次按下按钮时都会创建一个新的计时器实例

android - 错误 : [MissingType]: Element 'xxxxx.AppDatabase.room' references a type that is not present

c# - WPF MVVM 设计 ViewModel

Android:FrameLayout 的自定义边框

android - Facebook graph api 在 facebook 用户自己的页面上发布

java - 设置 TextView 颜色的最有效方法

android - 主构造函数的 Kotlin Dagger2 错误

wpf - 关于 ViewModel

c# - .NET 核心 MVC View 模型

java - 如何将自定义操作栏布局与 AndroidAnnotations 结合使用?