我的 kotlin 扩展
fun <T> View.findViewByIdCast(id : Int): T {
return findViewById(id) as T}
我的观众
var llImage: LinearLayout = itemView.findViewByIdCast(R.id.llImg)
我利用这个乐趣来获取我项目中的所有 View 项,
但是,在 androidVersion 26
它告诉我“findviewbyid 不满意:推断类型 T!不是 View 的子类型”
如何在 androidVersion 26 中修复我的扩展乐趣?
最佳答案
从 API 级别 26 开始, findViewById
方法本身(AppCompatActivity
、Fragment
、View
中的 Java 方法)是通用的——您不再需要包装它们。您可以在 this answer 中查看使用示例.
如果由于某种原因你仍然想包装它(比如你正在制作一个库并且你需要保留你的公共(public) API 或其他东西),你需要:
T
满足对 findViewById
的一般约束它的类型参数只能是 View
fun <T: View> View.findViewByIdCast(id: Int): T {
return findViewById<T>(id)
}
关于android - 在kotlin中findviewbuid作为T,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51029418/