类型推断失败。请尝试指定类型参数明确:Kotlin

时间:2018-01-04 06:48:24

标签: android kotlin

    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)

DogActivity.kt

    fun <R : Activity, T : ViewDataBinding> contentView(@LayoutRes layoutRes: Int):
     SetContentView<R, T> {
     return SetContentView(layoutRes)
    }

当我尝试将活动称为

val binding: ActivityLoginBinding by contentView(layoutRes = R.layout.activity_login)

抛出错误

  

类型推断失败。请尝试明确指定类型参数:Kotlin

Android Studio中的

。我在IntelliJ中尝试过类似的工作。

1 个答案:

答案 0 :(得分:2)

您需要为R方法使用getValue类型参数:

operator fun getValue(thisRef: R, property: KProperty<*>): T {
  ...
}