Android中的ViewModelProviderFactory在kotlin中
我正在试验来自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 } }
我的ViewModel看起来像这样:
class MyViewModel(val handler: Handler) : ViewModel()
任何人都知道如何避免讨厌的演员:
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
。
- Android Kotlin计算速度(时间)
- 无法生成视图绑定器java.lang.IndexOutOfBoundsException
- 测试运行失败:由于'kotlin.UninitializedPropertyAccessException'导致测试运行失败
- 有没有什么办法来覆盖Kotlin中扩展类的setter属性
- KotterKnife – 对某些类不能使用bindView(R.id.example_id)
- Kotlin RC NoClassDefFoundError
- 未解决的参考:数据绑定
- 使用Espresso的Android仪器测试失败:NoSuchMethodError javax.inject.Provider中的get()
- 在Android Studio中将Java文件传输到Kotlin中