代码之家  ›  专栏  ›  技术社区  ›  Talha Talip Açıkgöz

错误:找不到符号类数据绑定组件

  •  5
  • Talha Talip Açıkgöz  · 技术社区  · 6 年前

    我下载了一个Android项目,但出现了以下错误:

    Error:(42, 42) error: cannot find symbol class DataBindingComponent
    

    示例导入:

    import android.databinding.DataBindingComponent; // no code-time error
    import android.databinding.DataBindingUtil;
    import android.databinding.ViewDataBinding;
    

    示例用法:

    public FragmentFantasyPointsSingleBinding(DataBindingComponent bindingComponent, View root) {
            super(bindingComponent, root, 0);
            Object[] bindings = ViewDataBinding.mapBindings(bindingComponent, root, 4, sIncludes, sViewsWithIds);
            this.animationView = (LottieAnimationView) bindings[3];
            this.mboundView0 = (FrameLayout) bindings[0];
            this.mboundView0.setTag(null);
            this.progressView = (LinearLayout) bindings[2];
            this.recyclerView = (RecyclerView) bindings[1];
            setRootTag(root);
            invalidateAll();
        }
    

    在代码时间上没有错误,但是在编译时我得到了我提到的错误。

    当我尝试在Android Studio上定义时,我不能。

    应用程序级build.gradle:

    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 26
        defaultConfig {
            applicationId "com.esports.flank"
            minSdkVersion 19
            targetSdkVersion 26
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
            vectorDrawables.useSupportLibrary = true
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
        dataBinding {
            enabled = true
        }
    }
    
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.android.support:appcompat-v7:26.1.0'
        implementation 'com.android.support.constraint:constraint-layout:1.1.2'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.2'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
        compile 'com.android.support:support-annotations:26.1.0'
        compile "com.android.support:appcompat-v7:26.1.0"
        compile "com.android.support:recyclerview-v7:26.1.0"
        implementation 'com.android.support:cardview-v7:26.1.0'
        implementation 'com.github.bumptech.glide:glide:4.7.1'
        annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
        implementation 'de.hdodenhof:circleimageview:2.2.0'
        compile('com.twitter.sdk.android:twitter:3.3.0@aar') {
            transitive = true
        }
        compile 'com.microsoft.azure:azure-mobile-android:3.4.0@aar'
        implementation 'com.airbnb.android:lottie:2.5.5'
        compile 'com.github.ybq:Android-SpinKit:1.1.0'
        compile 'uk.co.chrisjenx:calligraphy:2.3.0'
        compile 'com.romandanylyk:pageindicatorview:1.0.1@aar'
        api 'com.google.guava:guava:26.0-android'
        compile 'com.android.support:design:26.1.0'
        implementation 'com.wajahatkarim3.EasyFlipView:EasyFlipView:2.1.0'
    }
    

    谢谢你的帮助。

    2 回复  |  直到 6 年前
        1
  •  12
  •   Martin Reiche    6 年前

    这个答案在类似的案例中帮助了我: https://stackoverflow.com/a/52550118/8655667

    1. 添加行 android.enableExperimentalFeatureDatabinding=true android.databinding.enableV2=false gradle.properties
    2. 同步项目
    3. 生成->清理项目
    4. 生成->重新生成项目

    重建后,它应该会给出实际编译失败的原因。

        2
  •  0
  •   Jeff    6 年前

    在我的例子中,问题的原因是我将一个ViewModel从它的原始包“目录”移到了一个新的包“目录”中,这个包是我为清理我的项目而创建的。我还有其他一些错误。

    我反复单击“Make Project”来定位导入问题,直到它们都被清除,但是在使用Windows GREP找到的相关XML文件中没有找到剩余的错误。

    我打开关联的XML文件,发现变量仍在引用原始路径(请注意,“<”和“>”未显示,因为我不知道如何转义它们):

    变量name=“viewModel”type=“original.project.path.name”

    我改成了:

    变量name=“viewModel”type=“new.project.path.name”

    这解决了我对这个问题的看法。