创建导航抽屉时出现致命错误:InflateException:二进制 XML 文件行 #1:膨胀 class DrawerLayout 时出错
Fatal Error When Creating Navigation Drawer: InflateException: Binary XML file line #1: Error inflating class DrawerLayout
我正在尝试按照本指南实施 Android 导航抽屉:
http://codetheory.in/android-navigation-drawer/
我收到以下错误:
07-06 11:59:06.125: E/AndroidRuntime(1878): FATAL EXCEPTION: main
07-06 11:59:06.125: E/AndroidRuntime(1878): Process: com.example.app, PID: 1878
07-06 11:59:06.125: E/AndroidRuntime(1878): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.app/com.example.app.Home}: android.view.InflateException: Binary XML file line #1: Error inflating class DrawerLayout
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.app.ActivityThread.access0(ActivityThread.java:135)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.os.Handler.dispatchMessage(Handler.java:102)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.os.Looper.loop(Looper.java:136)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.app.ActivityThread.main(ActivityThread.java:5001)
07-06 11:59:06.125: E/AndroidRuntime(1878): at java.lang.reflect.Method.invokeNative(Native Method)
07-06 11:59:06.125: E/AndroidRuntime(1878): at java.lang.reflect.Method.invoke(Method.java:515)
07-06 11:59:06.125: E/AndroidRuntime(1878): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
07-06 11:59:06.125: E/AndroidRuntime(1878): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
07-06 11:59:06.125: E/AndroidRuntime(1878): at dalvik.system.NativeStart.main(Native Method)
07-06 11:59:06.125: E/AndroidRuntime(1878): Caused by: android.view.InflateException: Binary XML file line #1: Error inflating class DrawerLayout
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:707)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
07-06 11:59:06.125: E/AndroidRuntime(1878): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.app.Activity.setContentView(Activity.java:1929)
07-06 11:59:06.125: E/AndroidRuntime(1878): at com.example.app.Home.onCreate(Home.java:125)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.app.Activity.performCreate(Activity.java:5231)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
07-06 11:59:06.125: E/AndroidRuntime(1878): ... 11 more
07-06 11:59:06.125: E/AndroidRuntime(1878): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.DrawerLayout" on path: DexPathList[[zip file "/data/app/com.example.app-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.app-2, /system/lib]]
07-06 11:59:06.125: E/AndroidRuntime(1878): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
07-06 11:59:06.125: E/AndroidRuntime(1878): at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
07-06 11:59:06.125: E/AndroidRuntime(1878): at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.view.LayoutInflater.createView(LayoutInflater.java:559)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:652)
07-06 11:59:06.125: E/AndroidRuntime(1878): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694)
07-06 11:59:06.125: E/AndroidRuntime(1878): ... 20 more
在我的源代码行#125 中是:
setContentView(R.layout.ss_home);
R.layout.ss_home的内容是:
<DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="00dp"
android:layout_marginTop="0dp"
android:orientation="vertical"
android:id="@+id/RootView" >
<RelativeLayout
android:layout_width="280dp"
android:layout_height="match_parent"
android:id="@+id/drawerPane"
android:layout_gravity="start">
...
如果有人能阐明为什么会发生这种情况/如何解决它 - 将不胜感激。
此时我很困惑(它说的资源丢失 - 存在![另外 - 我已经尝试清理项目并重新启动 Eclipse])
关于 XML 的变化,
<DrawerLayout
至 <android.support.v4.widget.DrawerLayout
别忘了集成支持库
您在迁移到 androidx 时可能错过了一些 classes 迁移。
对我来说,我使用旧的支持 class 而不是 androidx class 这个组件
android:appComponentFactory="androidx.core.app.CoreComponentFactory".
查看其他andoridx classes here.
我正在尝试按照本指南实施 Android 导航抽屉:
http://codetheory.in/android-navigation-drawer/
我收到以下错误:
07-06 11:59:06.125: E/AndroidRuntime(1878): FATAL EXCEPTION: main
07-06 11:59:06.125: E/AndroidRuntime(1878): Process: com.example.app, PID: 1878
07-06 11:59:06.125: E/AndroidRuntime(1878): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.app/com.example.app.Home}: android.view.InflateException: Binary XML file line #1: Error inflating class DrawerLayout
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.app.ActivityThread.access0(ActivityThread.java:135)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.os.Handler.dispatchMessage(Handler.java:102)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.os.Looper.loop(Looper.java:136)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.app.ActivityThread.main(ActivityThread.java:5001)
07-06 11:59:06.125: E/AndroidRuntime(1878): at java.lang.reflect.Method.invokeNative(Native Method)
07-06 11:59:06.125: E/AndroidRuntime(1878): at java.lang.reflect.Method.invoke(Method.java:515)
07-06 11:59:06.125: E/AndroidRuntime(1878): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
07-06 11:59:06.125: E/AndroidRuntime(1878): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
07-06 11:59:06.125: E/AndroidRuntime(1878): at dalvik.system.NativeStart.main(Native Method)
07-06 11:59:06.125: E/AndroidRuntime(1878): Caused by: android.view.InflateException: Binary XML file line #1: Error inflating class DrawerLayout
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:707)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
07-06 11:59:06.125: E/AndroidRuntime(1878): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.app.Activity.setContentView(Activity.java:1929)
07-06 11:59:06.125: E/AndroidRuntime(1878): at com.example.app.Home.onCreate(Home.java:125)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.app.Activity.performCreate(Activity.java:5231)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
07-06 11:59:06.125: E/AndroidRuntime(1878): ... 11 more
07-06 11:59:06.125: E/AndroidRuntime(1878): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.DrawerLayout" on path: DexPathList[[zip file "/data/app/com.example.app-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.app-2, /system/lib]]
07-06 11:59:06.125: E/AndroidRuntime(1878): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
07-06 11:59:06.125: E/AndroidRuntime(1878): at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
07-06 11:59:06.125: E/AndroidRuntime(1878): at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.view.LayoutInflater.createView(LayoutInflater.java:559)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:652)
07-06 11:59:06.125: E/AndroidRuntime(1878): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669)
07-06 11:59:06.125: E/AndroidRuntime(1878): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694)
07-06 11:59:06.125: E/AndroidRuntime(1878): ... 20 more
在我的源代码行#125 中是:
setContentView(R.layout.ss_home);
R.layout.ss_home的内容是:
<DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="00dp"
android:layout_marginTop="0dp"
android:orientation="vertical"
android:id="@+id/RootView" >
<RelativeLayout
android:layout_width="280dp"
android:layout_height="match_parent"
android:id="@+id/drawerPane"
android:layout_gravity="start">
...
如果有人能阐明为什么会发生这种情况/如何解决它 - 将不胜感激。
此时我很困惑(它说的资源丢失 - 存在![另外 - 我已经尝试清理项目并重新启动 Eclipse])
关于 XML 的变化,
<DrawerLayout
至 <android.support.v4.widget.DrawerLayout
别忘了集成支持库
您在迁移到 androidx 时可能错过了一些 classes 迁移。 对我来说,我使用旧的支持 class 而不是 androidx class 这个组件
android:appComponentFactory="androidx.core.app.CoreComponentFactory".
查看其他andoridx classes here.