代码之家  ›  专栏  ›  技术社区  ›  Luke Needham

为什么我生成的数据绑定类为我的复合视图抛出ClassCastException?

  •  0
  • Luke Needham  · 技术社区  · 6 年前

    我创建了一个复合视图,并将其从xml中膨胀,如下所示:

    class CompoundView @JvmOverloads constructor(
        context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
    ) : FrameLayout(context, attrs, defStyleAttr) {
    
        init {
            View.inflate(context, R.layout.my_layout, this)
        }
    

    然后我尝试在使用数据绑定的片段的XML布局中使用这个类。这个布局文件叫做 my_other_layout .当这个片段启动时,应用程序会以一种神秘的方式崩溃 ClassCastException .

    发生了什么事?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Luke Needham    6 年前

    在把我的大部分头发撕下来之后,我意识到问题是我有两个视图,在两个不同的XML布局文件中,具有相同的id。

    my_layout 包含一个名为 myView my_other_layout 还包含一个名为 myView .

    显然,数据绑定无法区分这些ID,因此试图将其中一个视图转换为另一个视图的类型。