【问题标题】:AppBarLayout inflating error after migrating to AndroidX迁移到 AndroidX 后 AppBarLayout 膨胀错误
【发布时间】:2019-04-09 21:15:20
【问题描述】:

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

标签: android androidx migrate android-appbarlayout


【解决方案1】:

我使用了 AS 3.2 Migrate to 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
  • 还有android.support.v7.widget.AppCompatCheckBoxandroidx.appcompat.widget.AppCompatCheckBox
  • 对于错误android.support.design.R.id.snackbar_text 使用com.google.android.material.R.id.snackbar_text
【解决方案2】:

除非您实现旧的支持库并启用 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,我觉得很难找到。也许某处有一个完整的列表,如developer.android.com/jetpack/androidx/migrate
  • 就像我说的,你可以在 Google 类名后面加上“AndroidX”。
  • 好的,空间变成( <androidx.legacy.widget.Space/>),作为奖励,你也许可以建议SwipeMenuRecyclerView
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-23
  • 2019-06-28
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多