创建导航抽屉时出现致命错误 - RelativeLayout$LayoutParams 无法转换为 android.support.v4.widget.DrawerLayout$LayoutParams
Fatal Error When Creating Navigation Drawer - RelativeLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams
我试图在我的应用程序中创建导航抽屉,但是当我尝试这样做时出现以下错误:
java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams
错误似乎引用了以下行 (721):
boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
我已经确认,指的是:
private android.support.v4.widget.DrawerLayout mDrawerLayout;
mDrawerLayout = (android.support.v4.widget.DrawerLayout) findViewById(R.id.drawerLayout);
和:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
所以我不确定为什么会收到有关 RelativeLayout 的错误。
非常感谢任何意见。
完整 XML:
完整来源:
LogCat:
07-06 15:18:19.418: E/AndroidRuntime(4514): FATAL EXCEPTION: main
07-06 15:18:19.418: E/AndroidRuntime(4514): Process: com.example.app, PID: 4514
07-06 15:18:19.418: E/AndroidRuntime(4514): java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams
07-06 15:18:19.418: E/AndroidRuntime(4514): at android.support.v4.widget.DrawerLayout.isDrawerView(DrawerLayout.java:1129)
07-06 15:18:19.418: E/AndroidRuntime(4514): at android.support.v4.widget.DrawerLayout.isDrawerOpen(DrawerLayout.java:1379)
07-06 15:18:19.418: E/AndroidRuntime(4514): at com.example.app.Home.onPrepareOptionsMenu(Home.java:721)
07-06 15:18:19.418: E/AndroidRuntime(4514): at android.app.Activity.onPreparePanel(Activity.java:2556)
07-06 15:18:19.418: E/AndroidRuntime(4514): at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:464)
07-06 15:18:19.418: E/AndroidRuntime(4514): at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:800)
07-06 15:18:19.418: E/AndroidRuntime(4514): at com.android.internal.policy.impl.PhoneWindow.run(PhoneWindow.java:221)
07-06 15:18:19.418: E/AndroidRuntime(4514): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
07-06 15:18:19.418: E/AndroidRuntime(4514): at android.view.Choreographer.doCallbacks(Choreographer.java:574)
07-06 15:18:19.418: E/AndroidRuntime(4514): at android.view.Choreographer.doFrame(Choreographer.java:543)
07-06 15:18:19.418: E/AndroidRuntime(4514): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
07-06 15:18:19.418: E/AndroidRuntime(4514): at android.os.Handler.handleCallback(Handler.java:733)
07-06 15:18:19.418: E/AndroidRuntime(4514): at android.os.Handler.dispatchMessage(Handler.java:95)
07-06 15:18:19.418: E/AndroidRuntime(4514): at android.os.Looper.loop(Looper.java:136)
07-06 15:18:19.418: E/AndroidRuntime(4514): at android.app.ActivityThread.main(ActivityThread.java:5001)
07-06 15:18:19.418: E/AndroidRuntime(4514): at java.lang.reflect.Method.invokeNative(Native Method)
07-06 15:18:19.418: E/AndroidRuntime(4514): at java.lang.reflect.Method.invoke(Method.java:515)
07-06 15:18:19.418: E/AndroidRuntime(4514): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
07-06 15:18:19.418: E/AndroidRuntime(4514): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
换行到
boolean drawerOpen = mDrawerLayout.isDrawerOpen(Gravity.START);
并添加到 XML
中的 ListView
android:layout_gravity="start"
最终将其从 RelativeLayout
中删除 - 它导致了问题:
android:layout_gravity="start"
在documentation之后,必须在列表中设置。
我试图在我的应用程序中创建导航抽屉,但是当我尝试这样做时出现以下错误:
java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams
错误似乎引用了以下行 (721):
boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
我已经确认,指的是:
private android.support.v4.widget.DrawerLayout mDrawerLayout;
mDrawerLayout = (android.support.v4.widget.DrawerLayout) findViewById(R.id.drawerLayout);
和:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
所以我不确定为什么会收到有关 RelativeLayout 的错误。
非常感谢任何意见。
完整 XML:
完整来源:
LogCat:
07-06 15:18:19.418: E/AndroidRuntime(4514): FATAL EXCEPTION: main
07-06 15:18:19.418: E/AndroidRuntime(4514): Process: com.example.app, PID: 4514
07-06 15:18:19.418: E/AndroidRuntime(4514): java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams
07-06 15:18:19.418: E/AndroidRuntime(4514): at android.support.v4.widget.DrawerLayout.isDrawerView(DrawerLayout.java:1129)
07-06 15:18:19.418: E/AndroidRuntime(4514): at android.support.v4.widget.DrawerLayout.isDrawerOpen(DrawerLayout.java:1379)
07-06 15:18:19.418: E/AndroidRuntime(4514): at com.example.app.Home.onPrepareOptionsMenu(Home.java:721)
07-06 15:18:19.418: E/AndroidRuntime(4514): at android.app.Activity.onPreparePanel(Activity.java:2556)
07-06 15:18:19.418: E/AndroidRuntime(4514): at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:464)
07-06 15:18:19.418: E/AndroidRuntime(4514): at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:800)
07-06 15:18:19.418: E/AndroidRuntime(4514): at com.android.internal.policy.impl.PhoneWindow.run(PhoneWindow.java:221)
07-06 15:18:19.418: E/AndroidRuntime(4514): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
07-06 15:18:19.418: E/AndroidRuntime(4514): at android.view.Choreographer.doCallbacks(Choreographer.java:574)
07-06 15:18:19.418: E/AndroidRuntime(4514): at android.view.Choreographer.doFrame(Choreographer.java:543)
07-06 15:18:19.418: E/AndroidRuntime(4514): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
07-06 15:18:19.418: E/AndroidRuntime(4514): at android.os.Handler.handleCallback(Handler.java:733)
07-06 15:18:19.418: E/AndroidRuntime(4514): at android.os.Handler.dispatchMessage(Handler.java:95)
07-06 15:18:19.418: E/AndroidRuntime(4514): at android.os.Looper.loop(Looper.java:136)
07-06 15:18:19.418: E/AndroidRuntime(4514): at android.app.ActivityThread.main(ActivityThread.java:5001)
07-06 15:18:19.418: E/AndroidRuntime(4514): at java.lang.reflect.Method.invokeNative(Native Method)
07-06 15:18:19.418: E/AndroidRuntime(4514): at java.lang.reflect.Method.invoke(Method.java:515)
07-06 15:18:19.418: E/AndroidRuntime(4514): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
07-06 15:18:19.418: E/AndroidRuntime(4514): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
换行到
boolean drawerOpen = mDrawerLayout.isDrawerOpen(Gravity.START);
并添加到 XML
中的 ListViewandroid:layout_gravity="start"
最终将其从 RelativeLayout
中删除 - 它导致了问题:
android:layout_gravity="start"
在documentation之后,必须在列表中设置。