小编Dis*_*ame的帖子

当子包中包含视图布局数据变量类型时,Android Studio 3.2.1中生成的ViewDataBinding类发生错误

我的Viewmodels包含在“ ViewModels”包中。当在我的片段布局xml文件中将其中一个设置为数据变量类型时,生成的ViewDataBinding类将尝试将包当作文件导入。例如:

import com.xyz.myapp.ViewModels;
Run Code Online (Sandbox Code Playgroud)

而不是:

import com.xyz.myapp.ViewModels.*;
Run Code Online (Sandbox Code Playgroud)

然后继续引用视图模型,因为这会ViewModels.MyFragmentViewModel导致进一步的错误。我发现解决此问题的方法是将我所有的视图模型文件都放在com.xyz.myapp目录中。这样做时,一切正常。

这和这里的要求相同我的声誉不足,无法发表评论。我想念什么吗?我需要设置一些选项吗?还是这只是一个错误?


TestFragment.java

import com.xyz.myapp.ViewModels;
Run Code Online (Sandbox Code Playgroud)


fragment_test.xml

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <data>
        <variable
            name="vm"
            type="com.xyz.myapp.ViewModels.MyFragmentViewModel"/>
    </data>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">


        <EditText
            android:id="@+id/editText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="textPersonName"
            android:text="@{vm.TEMP}" />
    </LinearLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)


MyFragmentViewModel.java

import com.xyz.myapp.ViewModels.*;
Run Code Online (Sandbox Code Playgroud)


FragmentTestBinding.java

这是生成的类。错误行被注释。4个错误

import com.xyz.myapp.ViewModels; //Error

public abstract class FragmentTestBinding extends ViewDataBinding {
  @NonNull
  public final CheckBox checkBox;

  @NonNull
  public final EditText editText;

  @Bindable
  protected ViewModels.ProfileViewModel mVm; //Error

  protected FragmentTestBinding(DataBindingComponent _bindingComponent, View _root,
      int _localFieldCount, …
Run Code Online (Sandbox Code Playgroud)

android android-databinding android-viewmodel

2
推荐指数
1
解决办法
909
查看次数