这两天学习了一下SlidingDrawer的用法,可今天试图把SlidingDrawer添加在一个MapView上,可老是报错,没弄明白...03-28 00:06:58.680: ERROR/AndroidRuntime(1159): FATAL EXCEPTION: main
03-28 00:06:58.680: ERROR/AndroidRuntime(1159): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.meation/com.meation.MapActivityMain}: java.lang.IllegalArgumentException: The handle attribute is must refer to an existing child.
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.app.ActivityThread.startActivityNow(ActivityThread.java:1487)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:654)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.widget.TabHost.setCurrentTab(TabHost.java:326)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:132)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:456)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.view.View.performClick(View.java:2485)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.view.View$PerformClick.run(View.java:9080)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.os.Handler.handleCallback(Handler.java:587)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.os.Handler.dispatchMessage(Handler.java:92)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.os.Looper.loop(Looper.java:123)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.app.ActivityThread.main(ActivityThread.java:3683)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at java.lang.reflect.Method.invokeNative(Native Method)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at java.lang.reflect.Method.invoke(Method.java:507)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at dalvik.system.NativeStart.main(Native Method)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159): Caused by: java.lang.IllegalArgumentException: The handle attribute is must refer to an existing child.
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.widget.SlidingDrawer.onFinishInflate(SlidingDrawer.java:239)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:631)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:626)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:626)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.app.Activity.setContentView(Activity.java:1657)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at com.meation.MapActivityMain.onCreate(MapActivityMain.java:73)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-28 00:06:58.680: ERROR/AndroidRuntime(1159):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
纠结...

解决方案 »

  1.   

    Caused by: java.lang.IllegalArgumentException: The handle attribute is must refer to an existing child.
    看这个错误,
    看了下资料@Override
        protected void onFinishInflate() {
            mHandle = findViewById(mHandleId);
            if (mHandle == null) {
                throw new IllegalArgumentException("The handle attribute is must refer to an"
                        + " existing child.");
            }
            mHandle.setOnClickListener(new DrawerToggler());        mContent = findViewById(mContentId);
            if (mContent == null) {
                throw new IllegalArgumentException("The content attribute is must refer to an" 
                        + " existing child.");
            }
            mContent.setVisibility(View.GONE);
        }mHandle或mContent 是空的话就有这个问题。        int handleId = a.getResourceId(R.styleable.SlidingDrawer_handle, 0);
            int contentId = a.getResourceId(R.styleable.SlidingDrawer_content, 0);确认你的sdk里有这个SlidingDrawer_handle和SlidingDrawer_content的资源。
    你可以在程序里试试getResourceId这两句话,应该是里面有一个的空的
      

  2.   

    你在mapView上用这个,呵呵,那会是什么样子的呢