首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >findViewById<T>()和findViewById()作为T有什么区别?

findViewById<T>()和findViewById()作为T有什么区别?
EN

Stack Overflow用户
提问于 2020-06-30 05:42:45
回答 2查看 98关注 0票数 1

当我尝试这段代码时,我可以得到正确的结果。

代码语言:javascript
复制
val layout: View = inflater.inflate(R.layout.custom_toast, findViewById<ViewGroup>(R.id.custom_toast_layout))

但是当我尝试这个转换代码时,我会得到空错误。

代码语言:javascript
复制
val layout: View = inflater.inflate(R.layout.custom_toast, findViewById(R.id.custom_toast_layout)) as ViewGroup

所以我猜

如果我使用铸造代码

findViewById方法首先根据此泛型T查找。如果没有关于T的id,它返回null,然后开始转换,我得到null。

如果我使用显式代码

findViewById方法首先根据此泛型T查找。有一个我想要的id,它返回视图,我得到视图。

这是我的猜测。我想知道发生这种事的确切原因。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-30 06:20:21

LayoutInflaters inflate Methode返回一个View

公共视图膨胀(int资源,ViewGroup根)

第二个参数是ViewGroup。您正在将充气(View)的返回值转换为ViewGroup

需要为第二个参数进行强制转换:

val layout: View = inflater.inflate(R.layout.custom_toast, findViewById(R.id.custom_toast_layout) as ViewGroup)

票数 0
EN

Stack Overflow用户

发布于 2020-06-30 06:20:44

而不是val layout: View = inflater.inflate(R.layout.custom_toast, findViewById(R.id.custom_toast_layout)) as ViewGroup

应该是val layout: View = inflater.inflate(R.layout.custom_toast, findViewById(R.id.custom_toast_layout) as ViewGroup)

这里的问题是,您正在抛出洞inflater.inflate(),而不是findViewById()的返回值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62650977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档