Ent*_*eco 5 android viewmodel kotlin android-architecture-components
我正在尝试使用Google 的架构组件.具体来说,我想实现一个ViewModelProvider.Factory来创建一个带有构造函数参数的ViewModel,如下所示:
class MyFactory(val handler: Handler) : ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>?): T {
return MyViewModel(handler) as T
}
}
Run Code Online (Sandbox Code Playgroud)
我的ViewModel看起来像这样:
class MyViewModel(val handler: Handler) : ViewModel()
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何避免最后的讨厌演员:
return MyViewModel(handler) as T
Run Code Online (Sandbox Code Playgroud)
Bla*_*der 11
你可以写:
class MyFactory(val handler: Handler) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
return modelClass.getConstructor(Handler::class.java).newInstance(handler)
}
}
Run Code Online (Sandbox Code Playgroud)
这将适用于任何接受Handler构造函数参数NoSuchMethodException的类,如果该类没有正确的构造函数,则抛出该类.
| 归档时间: |
|
| 查看次数: |
1854 次 |
| 最近记录: |