我想要一个基础 Activity 类,该类负责一些初始化工作,我开始像这样定义它。
abstract class BaseActivity<VIEW_MODEL : ViewModel, BINDING : ViewDataBinding> :
AppCompatActivity() {
lateinit var viewmodel: VIEW_MODEL
lateinit var binding: BINDING
lateinit var glide: RequestManager
@get:LayoutRes
abstract val layoutResource: Int
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, layoutResource)
viewmodel = ViewModelProviders.of(this).get(VIEW_MODEL::class.java)
^^^^^^^^^^^^^^^^^
this is causing error
}
}
但是我收到这个错误
Cannot use 'VIEW_MODEL' as reified type parameter. Use a class instead
我应该如何解决此问题,在这里我想将ViewModel的类型定义为BaseActivity的类型化参数。
我该如何实例化它?
最佳答案
一种解决方案是拥有这样的东西
abstract val viewModelClass: Class<VIEW_MODEL>
我真的很想不要这样的东西
关于android - 如何在BaseActivty类中具有通用ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55289334/