2014-02-08 233 views
1

我的android应用程序功能在屏幕底部的标签。其中一个标签应该有一个滑动菜单。我使用DrawerLayout实现了滑动菜单。但每次访问此选项卡时都会出现错误。 布局:自定义抽屉布局

<?xml version="1.0" encoding="utf-8"?> 
<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"> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

</android.support.v4.view.ViewPager> 
<FrameLayout 
     android:id="@+id/frame_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <!-- Screen Design for the SONGS --> 
<ListView 
     android:id="@+id/list_slidermenu" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="end" 
     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> 

的logcat:

02-08 21:54:18.099: E/AndroidRuntime(12877): FATAL EXCEPTION: main 
02-08 21:54:18.099: E/AndroidRuntime(12877): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.androidtablayout/com.example.androidtablayout.SongsActivity}: java.lang.ClassCastException: android.support.v4.widget.DrawerLayout cannot be cast to com.example.androidtablayout.SongsActivity$CustomDrawerLayout 
02-08 21:54:18.099: E/AndroidRuntime(12877): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100) 
02-08 21:54:18.099: E/AndroidRuntime(12877): at android.app.ActivityThread.startActivityNow(ActivityThread.java:1941) 
02-08 21:54:18.099: E/AndroidRuntime(12877): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135) 
02-08 21:54:18.099: E/AndroidRuntime(12877): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347) 
02-08 21:54:18.099: E/AndroidRuntime(12877): at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:705) 
02-08 21:54:18.099: E/AndroidRuntime(12877): at android.widget.TabHost.setCurrentTab(TabHost.java:369) 
02-08 21:54:18.099: E/AndroidRuntime(12877): at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:150) 
02-08 21:54:18.099: E/AndroidRuntime(12877): at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:560) 
02-08 21:54:18.099: E/AndroidRuntime(12877): at android.view.View.performClick(View.java:4223) 
02-08 21:54:18.099: E/AndroidRuntime(12877): at android.view.View$PerformClick.run(View.java:17275) 
02-08 21:54:18.099: E/AndroidRuntime(12877): at android.os.Handler.handleCallback(Handler.java:615) 
02-08 21:54:18.099: E/AndroidRuntime(12877): at android.os.Handler.dispatchMessage(Handler.java:92) 
02-08 21:54:18.099: E/AndroidRuntime(12877): at android.os.Looper.loop(Looper.java:137) 
02-08 21:54:18.099: E/AndroidRuntime(12877): at android.app.ActivityThread.main(ActivityThread.java:4898) 
02-08 21:54:18.099: E/AndroidRuntime(12877): at java.lang.reflect.Method.invokeNative(Native Method) 
02-08 21:54:18.099: E/AndroidRuntime(12877): at java.lang.reflect.Method.invoke(Method.java:511) 
02-08 21:54:18.099: E/AndroidRuntime(12877): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008) 
02-08 21:54:18.099: E/AndroidRuntime(12877): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775) 
02-08 21:54:18.099: E/AndroidRuntime(12877): at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:128) 
02-08 21:54:18.099: E/AndroidRuntime(12877): at dalvik.system.NativeStart.main(Native Method) 
02-08 21:54:18.099: E/AndroidRuntime(12877): Caused by: java.lang.ClassCastException: android.support.v4.widget.DrawerLayout cannot be cast to com.example.androidtablayout.SongsActivity$CustomDrawerLayout 
02-08 21:54:18.099: E/AndroidRuntime(12877): at com.example.androidtablayout.SongsActivity.onCreate(SongsActivity.java:57) 
02-08 21:54:18.099: E/AndroidRuntime(12877): at android.app.Activity.performCreate(Activity.java:5191) 
02-08 21:54:18.099: E/AndroidRuntime(12877): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 
02-08 21:54:18.099: E/AndroidRuntime(12877): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064) 
02-08 21:54:18.099: E/AndroidRuntime(12877): ... 19 more 

错误是指这个命令:mDrawerLayout = (CustomDrawerLayout) findViewById(R.id.drawer_layout);

我犯了一个CustomDrawerLayout因为我以前面对的一个错误,说明:

java.lang.IllegalArgumentException: DrawerLayout must be measured with MeasureSpec.EXACTLY. 

但现在我正面临着LogCat的错误五个。

回答

1

I made a CustomDrawerLayout

如果您检查布局文件,则没有CustomDrawerLayout。您有一个常规DrawerLayout。很可能,您需要修改布局文件以引用您的CustomDrawerLayout类,而不是DrawerLayout

+0

你能告诉我该怎么做吗? – nick28

+0

@ nick28:将您的布局文件中的'android.support.v4.widget.DrawerLayout'替换为'CustomDrawerLayout'的完全限定类名称。 – CommonsWare

+0

我换成android.support.v4.widget.DrawerLayout与com.example.androidtablayout.SongsActivity.CustomDrawerLayout但即时得到一个错误:异常渲染期间提出:装载机(COM /安卓/ IDE /月食/ ADT /内部/资源的实例/ manager/ProjectClassLoader):尝试重复名称定义:“com/example/androidtablayout/SongsActivity $ CustomDrawerLayout” – nick28

0

检查答案由CommonsWare,更换android.support.v4.widget.DrawerLayout与您的自定义布局名称,并确保它不一个内部类。我有和你一样的问题,但解决了它。

希望它能帮助!