在使用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
}
我猜我丢失了一些东西,但我找不到它。
答案 0 :(得分: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 :(得分:3)
请从旧到新class mappings
例如;-使用 com.google.android.material.appbar.AppBarLayout
代替 android.support.design.widget.AppBarLayout
对于 AppBarLayout
对于工具栏
答案 2 :(得分:1)
根据the AndroidX migration docs,AppBarLayout的androidx
替代为com.google.android.material.appbar.AppBarLayout
。尝试用此标签替换您的AppBarLayout标签。
关于为什么编译/构建有效,我认为这与Jetifier有关,但我不确定。
答案 3 :(得分:1)
如果使用的是 Kotlin DSL ,则必须将其添加到 build.gradle.kts
implementation("com.google.android.material:material:1.1.0")
implementation("androidx.appcompat:appcompat:1.1.0")
,并在您的布局中使用 <com.google.android.material.appbar.AppBarLayout/>
答案 4 :(得分:0)
Androidx膨胀类<android.support.design.widget.TabLayout/>
将不起作用
它不存在,所以用<com.google.android.material.tabs.TabLayout/>
替换它
它将正常工作
而且不要忘记添加
实现'com.google.android.material:material:1.1.0-alpha07'
依赖于您