迁移到AndroidX后,错误膨胀类android.support.design.widget.AppBarLayout

问题描述 投票:0回答:3

在使用Android Studio将我的项目迁移到AndroidX(并手动修复大量导入错误)后,我没有编译错误,但是当应用程序启动时,我遇到了崩溃:

Error inflating class android.support.design.widget.AppBarLayout

布局文件中的违规行是:<android.support.design.widget.AppBarLayout

我在build.gradle的依赖关系是:

dependencies {
    def lifecycle_version = '2.1.0-alpha02'
    // used below--will be different for androidx (migrated 2019-02-04)
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'androidx.appcompat:appcompat:1.1.0-alpha01'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

    implementation 'androidx.coordinatorlayout:coordinatorlayout:1.0.0'

    implementation 'com.google.android.material:material:1.1.0-alpha03'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.2-alpha01'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.2-alpha01'
    implementation 'com.squareup.okhttp3:okhttp:3.11.0'
    implementation 'com.squareup.okio:okio:1.15.0'
    implementation 'io.reactivex.rxjava2:rxjava:2.2.5'
    implementation 'com.jakewharton.rxrelay2:rxrelay:2.1.0'
    // Relay class
    implementation 'com.jakewharton.rx2:replaying-share:2.1.0'
    // ReplayingShare
    implementation 'com.jakewharton.rxbinding2:rxbinding:2.2.0'
    // RxBinding
    implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"  // see def above
    // includes ViewModel and LiveData
    implementation 'org.apache.commons:commons-lang3:3.8.1'
    // for tuples like Triple
    implementation 'com.androidplot:androidplot-core:1.5.6'
    // AndroidPlot
}

我猜我错过了什么,但我找不到它是什么。

android android-appbarlayout androidx
3个回答
3
投票

你需要使用com.google.android.material.appbar.AppBarLayout

版本1.0.0已经出局所以你可以使用implementation 'androidx.appcompat:appcompat:1.0.0'

添加依赖关系implementation 'com.google.android.material:material:1.0.0'

并使用

<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">

</com.google.android.material.appbar.AppBarLayout>

1
投票

根据the AndroidX migration docsandroidx替代AppBarLayout是com.google.android.material.appbar.AppBarLayout。请尝试用此替换您的AppBarLayout标记。

至于为什么编译/建筑工作,我认为这与Jetifier有关,但我不确定。


1
投票

请通过这个旧到新的class mappings

例如; - 使用com.google.android.material.appbar.AppBarLayout而不是android.support.design.widget.AppBarLayout

对于AppBarLayout

enter image description here

对于工具栏

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.