DataBindingUtil не работает после добавления зависимости safe-args - PullRequest
0 голосов
/ 25 февраля 2020

Я добавляю зависимость safe-args:

уровень проекта:

dependencies {
    classpath 'com.android.tools.build:gradle:3.3.0'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$version_kotlin"
    classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:$version_navigation"

Уровень приложения:

apply plugin: 'androidx.navigation.safeargs'

Когда я синхронизирую c проект, моя привязка данных перестает работать, например:

val binding: FragmentGameOverBinding = DataBindingUtil.inflate(
        inflater, R.layout.fragment_game_over, container, false)
binding.tryAgainButton.setOnClickListener {view: View ->
    view.findNavController().navigate(R.id.action_gameOverFragment2_to_gameFragment2)
}
return binding.root

привязка. root показывает неразрешенную ссылку, и когда я go для DataBindingUtil. java, я получаю ошибку:

Library source does not match the bytecode for class DataBindingUtil

Я следую точным шагам в курсе udacity от Google, и все же кажется, что добавление зависимости safe-args каким-то образом вступает в противоречие с библиотекой привязки данных. Что я могу исправить?

1 Ответ

1 голос
/ 26 апреля 2020

Go для вас gradle.properties файла проверьте, есть ли у вас это внутри или добавьте:

android.enableJetifier=true
android.useAndroidX=true

Затем go в build.gradle (приложение) и добавьте это под android {

dataBinding {
    enabled = true
}
compileOptions {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
    jvmTarget = JavaVersion.VERSION_1_8
}

Курсы udacity не обновляются, вот версия зависимостей, которую я использую

Обратите внимание на эту часть:

Вместо использования этого в качестве подсказки Udacity (на уровне приложения build.gradle) НЕ ИСПОЛЬЗОВАТЬ android .arch

// Navigation
implementation "android.arch.navigation:navigation-fragment-ktx:$version_navigation"
implementation "android.arch.navigation:navigation-ui-ktx:$version_navigation"

Использовать

// Navigation

implementation "androidx.navigation:navigation-fragment-ktx:2.3.0-alpha04"
implementation "androidx.navigation:navigation-ui-ktx:2.3.0-alpha04"

А в build.gradle (уровень проекта)

classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.0-alpha04

Вот полный список зависимостей с используемой версией (на всякий случай)

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'androidx.navigation.safeargs'

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.21"

    // Support libraries
    implementation "androidx.constraintlayout:constraintlayout:1.1.3"

    // Android KTX
    implementation "androidx.core:core-ktx:"1.2.0"

    // Room and Lifecycle dependencies
    implementation "androidx.room:room-runtime:$version_room"
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    kapt "androidx.room:room-compiler:"2.0.0"
    implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"

    // Coroutines
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:"1.1.0"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:"1.1.0"

    // Navigation
    implementation "androidx.navigation:navigation-fragment-ktx:2.3.0-alpha04"
    implementation "androidx.navigation:navigation-ui-ktx:2.3.0-alpha04"

    // Testing
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...