将我的Android工作室升级到3.4后,将Android Gradle Plugin升级到3.4并将gradle升级到5.1.1
我得到了如下的数据绑定错误
我已确保清理项目并重建,我已清除缓存并重新启动AS。
此问题在升级之前从未发生过
我可以确认这是因为新的gradle更新
DataBinderMapperImpl.java:54:错误:找不到符号
e:[kapt]发生异常:android.databinding.tool.util.LoggedErrorException:发现数据绑定错误。 **** /数据绑定错误****消息:虽然已注册,但缺少导入表达式
我找到了解决方案:解决方案:
在我升级了我的Android工作室和gradle插件后,由于以下行,我遇到了类似的问题。我在我的布局文件中使用了这个<import type="java.lang.String" />
。删除此导入解决了该问题。
Just as in managed code, java.lang.* is imported automatically.
我还在数据绑定中遇到这些错误。我试过'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" />
我希望这些能解决你的问题。
我假设你使用的是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