Android 在kotlin中找到作为T的可视液体

Android 在kotlin中找到作为T的可视液体,android,generics,kotlin,Android,Generics,Kotlin,我的kotlin分机 fun <T> View.findViewByIdCast(id : Int): T { return findViewById(id) as T} 我利用这一乐趣获取项目中的所有视图项, 但是,在androidVersion 26中 它显示“findviewbyid不满足:推断类型T!不是视图的子类型” 如何修复AndroidVersion26中的扩展乐趣 从API级别26开始,方法本身(在AppCompatActivity,Fragment,View中的J

我的kotlin分机

fun <T> View.findViewByIdCast(id : Int): T {
return findViewById(id) as T}
我利用这一乐趣获取项目中的所有视图项, 但是,在androidVersion 26中 它显示“findviewbyid不满足:推断类型T!不是视图的子类型” 如何修复AndroidVersion26中的扩展乐趣

从API级别26开始,方法本身(在
AppCompatActivity
Fragment
View
中的Java方法)是通用的-您不再需要包装它们。您可以在中看到使用示例


如果出于某种原因,您仍然希望包装它(例如,您正在制作一个库,需要保留您的公共API或其他东西),那么您需要:

  • 传递泛型参数
  • 这意味着你现在可以避开演员阵容了
  • 最后,约束
    T
    ,以满足
    findViewById
    上的一般约束,即其类型参数只能是
    视图

fun View.findviewbydcast(id:Int):T{
返回findViewById(id)
}
var llImage: LinearLayout = itemView.findViewByIdCast(R.id.llImg)
fun <T: View> View.findViewByIdCast(id: Int): T {
    return findViewById<T>(id)
}