【发布时间】: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 方法 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
【问题讨论】:
-
给我看看 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