当我尝试这段代码时,我可以得到正确的结果。
val layout: View = inflater.inflate(R.layout.custom_toast, findViewById<ViewGroup>(R.id.custom_toast_layout))但是当我尝试这个转换代码时,我会得到空错误。
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,它返回视图,我得到视图。
这是我的猜测。我想知道发生这种事的确切原因。
发布于 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)
发布于 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()的返回值。
https://stackoverflow.com/questions/62650977
复制相似问题