迁移到AndroidX后,调用 Snackbar.make()方法后,我的应用程序崩溃了。错误看起来像
Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class android.support.design.internal.SnackbarContentLayout
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.design.internal.SnackbarContentLayout"
奇怪的是,内部 Snackbar 方法 make()仍在尝试访问旧支持包中的 SnackbarContentLayout 类,而不是新材料中的类。请告诉我我在做什么错。
更新
最后我找到了解决方案。我的项目中有一个自定义布局,它会覆盖
Snackbar的design_layout_snackbar_include
的根 view 标记中的类错误:
<view
xmlns:android="http://schemas.android.com/apk/res/android"
class="android.support.design.internal.SnackbarContentLayout"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom">
我将其更改为com.google.android.material.snackbar.SnackbarContentLayout
答案 0 :(得分:0)
通过将其包含在gradle.properties文件中,确保将您的项目设置为将旧软件包迁移到Androidx:
android.useAndroidX = true
android.enableJetifier = true