내 안드로이드 응용 프로그램에는 화면 하단에 탭이 있습니다. 탭 중 하나에 슬라이딩 메뉴가 있어야합니다. DrawerLayout을 사용하여 슬라이딩 메뉴를 구현했습니다. 하지만이 탭에 액세스 할 때마다 오류가 발생합니다. 레이아웃 :맞춤형 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>
로그 캣 : 오류가이 명령을 의미
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
:
java.lang.IllegalArgumentException: DrawerLayout must be measured with MeasureSpec.EXACTLY.
: 내가 이전 내용의 오류에 직면했기 때문에 나는 CustomDrawerLayout했다
mDrawerLayout = (CustomDrawerLayout) findViewById(R.id.drawer_layout);
하지만 지금은 LogCat abo의 오류에 직면하고 있습니다. ve.
어떻게 그 방법을 알려주시겠습니까? – nick28
@ nick28 : 레이아웃 파일의'android.support.v4.widget.DrawerLayout'을'CustomDrawerLayout'의 정규화 된 클래스 이름으로 대체하십시오. – CommonsWare
android.support.v4.widget.DrawerLayout을 com.example.androidtablayout.SongsActivity.CustomDrawerLayout으로 바꾸었지만 오류가 발생했습니다. 렌더링 중에 예외가 발생했습니다 : loader (com/android/ide/eclipse/adt/internal/resources 인스턴스)/manager/ProjectClassLoader) : name : "com/example/androidtablayout/SongsActivity $ CustomDrawerLayout"에 대한 중복 클래스 정의를 시도했습니다. – nick28