原文链接:ViewModel中传入Context的方法 - 掘金
ViewModel
使用的越来越多了,严格来说,官方并不建议你在ViewModel
中添加Context
的引用。同时,ViewModel
的构造方法是没有任何参数的,有的时候会很不灵活。以下记录两种方法。
1.通过kotlin的拓展函数
fun <T : ViewModelProvider, V : ViewModel> T.get(
key: String,
modelClass: Class<V>,
context: FragmentActivity
): V {
val model = get(key, modelClass)
if (model is TestViewModel) {
model.addContext(context)
}
return model
}
fun <T : ViewModelProvider, V : ViewModel> T.get(
key: String,
modelClass: Class<V>,
context: Context
): V {
val model = get(key, modelClass)
if (model is TestViewModel) {
model.addContext(context)
}
return model
}
fun <T : Vie