我将Android Studio升级到3.4之后,将Android Gradle插件升级到3.4并升级到5.1.1
我遇到如下数据绑定错误
我确保已清理项目并重建,清除了缓存并重新启动了AS。
此问题从未在升级之前发生
我可以确认是由于新的gradle更新
DataBinderMapperImpl.java:54:错误:找不到符号
e:[kapt]发生异常:android.databinding.tool.util.LoggedErrorException:找到了数据绑定 错误。 **** /数据绑定错误**** msg:虽然已注册但缺少导入表达式
我找到了解决方案: 解决方案:
答案 0 :(得分:39)
升级Android Studio和gradle插件后,由于以下原因,我遇到了类似的问题。
我在布局文件中使用了<import type="java.lang.String" />
。
删除此导入即可解决问题。
Just as in managed code, java.lang.* is imported automatically.
答案 1 :(得分:1)
我在数据绑定中也遇到这些错误。我尝试使用“ android.databinding.enableV2 = true”,但无法正常工作。重做layout.xml的数据绑定后,我找到了这些解决方案。 如果我在layout.xml中使用“ android.view.View”,则确实导入了View并声明了这样的变量,
<data>
<import type="java.util.List" />
<import type="android.view.View" />
<import type="com.example.android.mobilepos.data.pojos.ActionData" />
<variable
name="view"
type="View" />
<variable name="actionList" type="java.util.List<com.example.android.mobilepos.data.pojos.ActionData>" />
并以这种方式使用变量视图。
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txt_payment_remark"
android:hint="@string/hint_payment_remark"
android:visibility="@{switch1.checked ? view.VISIBLE : view.GONE}" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/action_data_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/color_white"
android:focusable="true"
android:clickable="true"
app:actionSource="@{actionList}"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"
tools:context=".ui.fragments.NewInvoiceFragment"
tools:listitem="@layout/fragment_new_invoice">
我也这样做了Integer.toString()功能,但是无法在layout.xml中导入和使用Integer。因此,我将Integer值转换为带有%d标签的strings.xml。
<EditText
android:id="@+id/txt_qty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/hint_quantity"
android:inputType="number"
android:maxLength="5"
android:maxLines="1"
android:singleLine="true"
android:text="@{@string/shipment_qty(product.qty)}"
android:textAlignment="center"
android:textColor="@color/black"
android:textStyle="bold"
tools:text="1000" />
我希望这些可以解决您的问题。
答案 2 :(得分:0)
我假设您正在使用gradle插件版本3.4(而不是您所提到的4.3)。查看可用的gradle-plugin版本列表 https://developer.android.com/studio/releases/gradle-plugin#updating-gradle。数据绑定编译器选项https://developer.android.com/topic/libraries/data-binding/start#preview-compiler
有变化要启用新的数据绑定编译器,请在gradle.properties文件中添加以下选项:
android.databinding.enableV2=true