报错

Windows 系统中编译时报错

e: error: unable to prepare resource bundle javax.xml.bind.UnmarshalException

原因

Databinding 的布局文件中含有中文,在 Windows 系统中编译会出现这个错误,在 MacOS 中含有中文编译不会出错。

出错位置如下:

<TextView
            android:id="@+id/sign"
            android:layout_width="60dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="15dp"
            android:layout_marginRight="15dp"
            android:background="@drawable/selector_out_sign"
            android:enabled='@{"1".equals(data.canSigned)}'
            android:gravity="center"
            android:onClick="@{() -> click.sign()}"
            android:paddingTop="4.5dp"
            android:paddingBottom="4.5dp"
            android:text='@{"1".equals(data.canSigned) ? "签到" : "未签到"}'
            android:textColor="@drawable/selector_out_sign_text"
            android:textSize="11sp"
            android:visibility='@{"2".equals(data.status) ? View.INVISIBLE : View.VISIBLE}'
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            tools:enabled="true"
            tools:text="未开始"
            tools:visibility="invisible" />

代码中的 签到未签到 为报错位置,不应该在出现在绑定内容中。

解决

将绑定内容中的 中文字符 放到 资源文件 中然后引用即可解决。

如果觉得我的文章对你有用,请随意赞赏