解析android.support.v4.widget.drawerlayout类时出错

17

我已经对这个主题进行了多次搜索。 我已经完成了以下操作:

  1. 通过SDK管理器确保支持库已经更新到最新版本。
  2. 进入构建路径和顺序和导出选项卡,确保依赖项已经被勾选。
  3. 清理了我的项目并重新启动adt。
  4. 右键单击项目 -> Android工具 -> 添加支持库。

我已经在另一个项目中使用了支持库,并且它工作得很好,但是我没有使用drawerlayout。 下面是我在活动类中调用的xml文件。 当它调用 setContentView(R.layout.main_sliding_layout); 时会出现此错误。

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:id="@+id/frame_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <ListView
        android:id="@+id/list_slidermenu"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"
        android:divider="@color/list_divider"
        android:dividerHeight="1dp"       
        android:listSelector="@drawable/list_selector"
        android:background="@color/list_background"/>
</android.support.v4.widget.DrawerLayout>
8个回答

27
在最新的版本中:
如果你正在使用androidx支持库,则请使用:
androidx.drawerlayout.widget.DrawerLayout
而不是:
android.support.v4.widget.DrawerLayout
并且使用:
com.google.android.material.navigation.NavigationView
而不是:
android.support.design.widget.NavigationView
对于其他等效的androidx类,请参考以下链接: https://developer.android.com/jetpack/androidx/migrate

19

如果您刚刚迁移到 AndroidX,则会弹出相同的错误。

Error inflating class androidx.core.widget.DrawerLayout

只需更改

androidx.core.widget.DrawerLayout

androidx.drawerlayout.widget.DrawerLayout
在每个XML文件中。

非常感谢您为我节省了很多时间:-) 现在它可以工作了!只需使用Windows和Linux/Ubuntu上的快捷键Ctrl+Shift+R或Mac OS X上的Cmd+Shift+R,在Android Studio中更改所有XML文件中的内容即可。 - phil

7
如果有人在寻找解决方法或者想知道发生了什么,这仍然是个谜。我离开了几个小时,只是为了放松一下,摆脱困扰,以为我回来后就能发现我忽略的问题所在。我打开应用程序,结果它就开始工作了。我没有进行任何新的更新或其他操作。虽然应用程序已经开始工作,但对于发生了什么事情并没有什么帮助。好吧,往前走,向上爬吧。

我希望同样的事情也会发生在我身上...只有时间能证明 :'( - The Hungry Androider
哈哈...!! 在安卓开发中有时候确实会遇到这种棘手的问题 ;-) 只需重启 Eclipse / 电脑就好啦。:D - Hardik Joshi
我已经阅读了第一个答案并迁移到了androidx,这为我解决了问题。但在阅读此文后,我怀疑是否需要进行迁移。你还在使用android.support吗? - Mikolasan

3
在最新版本中: 如果您正在使用androidx支持库,则应该使用以下内容:
使用:
androidx.drawerlayout.widget.DrawerLayout

改为:

android.support.v4.widget.DrawerLayout

并且

用途:

com.google.android.material.navigation.NavigationView

替换为:

android.support.design.widget.NavigationView

如需其他等效的AndroidX类,请参考此链接

非常感谢。

3

前往build.gradle脚本并添加支持的依赖项。

通过在依赖项中添加以下内容: compile 'com.android.support:support-v4:22.1.1'


添加最新的支持库解决了我的问题。 - Alex

3

跟随以下步骤:

1. 配置构建路径

2. 添加Android库和Android依赖库

3. 排序并导出所有这些依赖项和Android库。


我改变了v4和v7支持库的顺序。现在它可以工作了。 - Mohammed H

3

当我使用最新的AndroidX创建新项目,并从上一个使用支持库的项目中复制代码到其中时,我遇到了这个错误。

通过将android.support.v4.widget.DrawerLayout替换为androidx.drawerlayout.widget.DrawerLayout解决了这个问题。


1
许多情况下,没有错误,但仍显示“error inflating class android.support.v4.widget.drawerlayout”。
我通过添加“Android Support Library”来解决我的问题。
步骤:
右键单击项目-> Android工具->添加支持库。
然后,我只需清理项目,它就能为我工作......
当然,检查Android库和其他库。

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