java.lang.ClassCastException 用于 <include> 标记使用 DataBinding

java.lang.ClassCastException for <include> tag using DataBinding

我有以下设置。 main 模块依赖于 search 模块,后者又依赖于 commonui 模块。所有三个模块都使用数据绑定。在 commonui 模块中我有 toolbar.xml 文件。此文件在 fragment.xml 文件中的 search 模块中使用 <include> 标签,如下所示:

<include
     android:id="@+id/fem_toolbar"
     layout="@layout/toolbar"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"/>

在 运行 应用程序之后,当使用此 xml 导航到片段时,我遇到以下崩溃:

E/CrashLogHandler: Stack trace: java.lang.RuntimeException: Unable to start activity ComponentInfo{xx.xxxxx.debug/xx.xxxxx.search.Activity}: java.lang.ClassCastException: xx.xxxxx.databinding.ToolbarBindingImpl cannot be cast to xx.xxxxx.common.ui.databinding.ToolbarBinding
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6541)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

有人知道发生了什么事吗? 我也看到了这个库的类似问题:https://github.com/heinrichreimer/material-intro/issues/256

我终于弄清楚我的设置出了什么问题。 我正在将应用程序的搜索相关部分移动到 search 模块中。除了 AndroidManifest.xmlSearchActivity 的定义,我移动了所有内容。 因此,出于某种原因,当 activity 像这样定义时,数据绑定表现得很奇怪。 只需移动 activity do search 模块的 AndroidManifest.xml 的定义即可解决问题。