迁移到AndroidX后,AppBarLayout膨胀错误

9
迁移到 AndroidX 时,我遇到了如下问题:
Java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.mandarine.android/com.mandarine.android.features.root.RootActivity}:
android.view.InflateException: Binary XML file line #18: Binary XML file line #18:
Error inflating class android.support.design.widget.AppBarLayout

请展示您的 build.gradle 文件。 - ecle
2个回答

37

我使用了 AS 3.2 迁移至 AndroidX 向导。但它未能迁移一些类。以下是我在项目中遇到的一些情况。第二个条目才是正确的。

android.support.design.widget.BottomSheetDialog
com.google.android.material.bottomsheet.BottomSheetDialog 

android.support.design.widget.TextInputLayout
com.google.android.material.textfield.TextInputLayout 

android.support.design.widget.CoordinatorLayout
androidx.coordinatorlayout.widget.CoordinatorLayout

android.support.design.widget.NavigationView
com.google.android.material.navigation.NavigationView

androidx.core.view.ViewPager
androidx.viewpager.widget.ViewPager

android.support.design.widget.BottomSheetBehavior
com.google.android.material.bottomsheet.BottomSheetBehavior 

android.support.v7.widget.Toolbar
androidx.appcompat.widget.Toolbar 

android.support.design.internal.BottomNavigationItemView
com.google.android.material.bottomnavigation.BottomNavigationItemView

android.support.design.internal.BottomNavigationMenuView
com.google.android.material.bottomnavigation.BottomNavigationMenuView 

androidx.appcompat.widget.CardView
androidx.cardview.widget.CardView 

android.support.design.widget.BottomNavigationView
com.google.android.material.bottomnavigation.BottomNavigationView

androidx.core.view.ViewPager
androidx.viewpager.widget.ViewPager

importandroidx.core.widget.DrawerLayout
androidx.drawerlayout.widget.DrawerLayout 

androidx.appcompat.widget.RecyclerView
androidx.recyclerview.widget.RecyclerView 

androidx.core.view.PagerAdapter
androidx.viewpager.widget.PagerAdapter

importandroidx.core.app.FragmentManager
importandroidx.fragment.app.FragmentManager

另外,您应该将这些行替换为com.google.android.material.floatingactionbutton.FloatingActionButton,而不是android.support.design.widget.FloatingActionButton - mDonmez
1
并且使用androidx.appcompat.widget.AppCompatCheckBox替代android.support.v7.widget.AppCompatCheckBox. - mDonmez
同样针对错误“android.support.design.R.id.snackbar_text”,请使用“com.google.android.material.R.id.snackbar_text”。 - makata

13

除非你实现旧的支持库并启用Jetifier,否则必须在XML中重命名所有的支持类。

android.support.design.widget.AppBarLayout 现在是 com.google.android.material.appbar.AppBarLayout

您可能需要在 build.gradle 中使用 implementation 'com.google.android.material:material:1.0.0-beta01'

查找 XML 中使用支持库的任何其他视图,并重命名标签以匹配其 AndroidX 版本。您只需在 Google 中搜索“ClassName AndroidX”,即可找到该类的文档。


谢谢,现在我们可以使用 implementation 'com.google.android.material:material:1.0.0'。但是,你能提供一个链接吗,我可以在其中找到类的名称,例如对于 Space,我发现很难找到。也许有一个完整的列表,类似于 https://developer.android.com/jetpack/androidx/migrate - Morozov
就像我说的那样,你可以在谷歌上搜索类名,然后加上“AndroidX”。 - TheWanderer
好的,空间变成了(<androidx.legacy.widget.Space/>),作为奖励,你能否建议一下SwipeMenuRecyclerView - Morozov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接