class SetContentView<in R : Activity, out T : ViewDataBinding>(
@LayoutRes private val layoutRes: Int) {
private var value : T? = null
operator fun getValue(thisRef: Activity, property: KProperty<*>): T {
value = value ?: DataBindingUtil.setContentView<T>(thisRef, layoutRes)
return value
}
}
val binding: ActivityDogBinding by contentView(R.layout.activity_dog)
狗 Activity .kt
fun <R : Activity, T : ViewDataBinding> contentView(@LayoutRes layoutRes: Int):
SetContentView<R, T> {
return SetContentView(layoutRes)
}
当我尝试将 Activity 称为
val binding: ActivityLoginBinding by contentView(layoutRes = R.layout.activity_login)
它的抛出错误为
在 Android Studio 中。我在 IntelliJ 中尝试了类似的方法,它工作正常。
最佳答案
您需要为 R
方法使用 getValue
类型参数:
operator fun getValue(thisRef: R, property: KProperty<*>): T {
...
}
关于android - 类型推断失败。请尝试明确指定类型参数 : Kotlin,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48090049/