【问题标题】:Databinding errors after migrating to AndroidX迁移到 AndroidX 后出现数据绑定错误
【发布时间】:2018-12-12 01:08:09
【问题描述】:

迁移到 AndroidX 后,我遇到了很多数据绑定错误(重构 > 迁移到 AndroidX)。

error: cannot find symbol
      @Nullable ViewGroup root, boolean attachToRoot, @Nullable DataBindingComponent component) {
                                                                ^
  symbol:   class DataBindingComponent
  location: class ActivityInfoBinding   

我使用的是 Android Studio 3.2 Beta 2

我的依赖:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.0.0-beta01'
    implementation 'androidx.cardview:cardview:1.0.0-beta01'
    implementation 'com.google.android.material:material:1.0.0-beta01'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha1'
    implementation "com.squareup.retrofit2:retrofit:$versions.retrofit"
    implementation "com.squareup.retrofit2:converter-gson:$versions.retrofit"
    implementation 'androidx.room:room-runtime:2.0.0-beta01'
    kapt 'androidx.room:room-compiler:2.0.0-beta01'
    implementation "androidx.core:core-ktx:$versions.ktx"
    implementation 'androidx.lifecycle:lifecycle-runtime:2.0.0-beta01'
    implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0-beta01'
    kapt 'androidx.lifecycle:lifecycle-compiler:2.0.0-beta01'
    implementation "me.tatarka.bindingcollectionadapter2:bindingcollectionadapter:$versions.binding_collection_adapter"
    implementation "me.tatarka.bindingcollectionadapter2:bindingcollectionadapter-recyclerview:$versions.binding_collection_adapter"
    implementation "com.jakewharton.threetenabp:threetenabp:$versions.threetenabp"
    implementation "com.google.dagger:dagger:$versions.dagger"
    kapt "com.google.dagger:dagger-compiler:$versions.dagger"
    kapt "com.google.dagger:dagger-android-processor:$versions.dagger"
    implementation "com.google.dagger:dagger-android-support:$versions.dagger"
    implementation "com.airbnb.android:lottie:$versions.lottie"
    implementation "com.github.bumptech.glide:glide:$versions.glide"
    implementation "com.jakewharton.timber:timber:$versions.timber"
    implementation "com.crashlytics.sdk.android:crashlytics:$versions.crashlytics"
    implementation "com.google.firebase:firebase-core:$versions.firebase_core"

    testImplementation "junit:junit:$versions.junit"
    androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'
} 

【问题讨论】:

  • 数据绑定在 Android 中是一个诅咒。
  • 我喜欢 android 数据绑定本身,代码很干净,但是工具很难使用:(
  • 您是否尝试重建和/或使缓存无效并重新启动?有更新的版本可用,例如:androidx.appcompat:appcompat:1.0.0-rc02 你应该更新这些。你能展示你所展示的错误发生的整个类吗?
  • @qbait 昨天发现,有一个 androidx 数据绑定编译器可用(尽管仍处于试验阶段):stackoverflow.com/a/52489036/549372

标签: android android-databinding androidx


【解决方案1】:

为了解决这个问题,我必须更新 layout 文件中的所有类名。

发件人:

<android.support.design.widget.CoordinatorLayout
<android.support.v7.widget.RecyclerView
...

到:

<androidx.core.widget.NestedScrollView
<androidx.coordinatorlayout.widget.CoordinatorLayout
...

之后,数据绑定错误就消失了。

我运行了迁移工具,但它没有修复布局 xml 上的类名,伤心!

【讨论】:

    【解决方案2】:

    更新到最新的 Android Studio 并重新导入项目解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-04
      • 2020-03-02
      • 2019-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多