Android 在kotlin中找到作为T的可视液体
我的kotlin分机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
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)
}