迁移到AndroidX后找不到SnackbarContentLayout类

时间:2020-04-01 08:28:22

标签: android android-studio androidx android-snackbar snackbar

迁移到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

1 个答案:

答案 0 :(得分:0)

通过将其包含在gradle.properties文件中,确保将您的项目设置为将旧软件包迁移到Androidx:

android.useAndroidX = true
android.enableJetifier = true