【问题标题】:SnackbarContentLayout class not found after migration to AndroidX迁移到 AndroidX 后找不到 SnackbarContentLayout 类
【发布时间】:2020-07-12 22:43:58
【问题描述】:

迁移到 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 方法 ma​​ke() 仍在尝试访问旧支持包中的 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

【问题讨论】:

  • 给我看看 xml 代码
  • 展示你的作品。检查导入import com.google.android.material.snackbar.Snackbar
  • @IntelliJAmiya Snackbar 是从材料包中导入的。 import com.google.android.material.snackbar.Snackbar;
  • @Jaydeepchatrola 这是一个 'androidx.coordinatorlayout.widget.CoordinatorLayout' 根的活动

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


【解决方案1】:

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

android.useAndroidX=true
android.enableJetifier=true

【讨论】:

  • 已启用。我曾经使用过 Android Studio 内置的迁移重构工具
猜你喜欢
  • 1970-01-01
  • 2018-11-10
  • 1970-01-01
  • 2019-07-12
  • 1970-01-01
  • 1970-01-01
  • 2019-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多