2015-02-11 81 views
1

这是抽屉式导航栏定义的片段,在main_activity.xml导航抽屉片段只适用于ListView控件布局

<fragment android:id="@+id/navigation_drawer" 
     android:layout_width="@dimen/navigation_drawer_width" android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:name="com.test.NavigationDrawerFragment" 
     tools:layout="@layout/fragment_navigation_drawer" /> 

这是片段的布局:

<RelativeLayout 

    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent"> 

    <ListView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:choiceMode="singleChoice" 
     android:divider="@android:color/transparent" 
     android:dividerHeight="0dp" 
     android:background="#ffe7fdf6" 
     android:id="@+id/myListView" 
     xmlns:android="http://schemas.android.com/apk/res/android" /> 

</RelativeLayout> 

和Java代码:

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     View view = inflater.inflate(
       R.layout.fragment_navigation_drawer, container, false); 


     ListView lv = (ListView) view.findViewById(R.id.myListView); 

     mDrawerListView = lv; 

这只适用于当我有一个ListView为fragmen布局。为什么它不适用于相对布局?

当我运行的应用程序的崩溃:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test/com.test.MainActivity}: android.view.InflateException: Binary XML file line #19: Error inflating class fragment 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2328) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2386) 
      at android.app.ActivityThread.access$900(ActivityThread.java:169) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1277) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:136) 
      at android.app.ActivityThread.main(ActivityThread.java:5476) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: android.view.InflateException: Binary XML file line #19: Error inflating class fragment 
      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:719) 
      at android.view.LayoutInflater.rInflate(LayoutInflater.java:761) 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:498) 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:398) 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:354) 
      at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228) 
      at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102) 
      at com.test.MainActivity.onCreate(MainActivity.java:87) 
      at android.app.Activity.performCreate(Activity.java:5451) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2292) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2386) 
            at android.app.ActivityThread.access$900(ActivityThread.java:169) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1277) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:136) 
            at android.app.ActivityThread.main(ActivityThread.java:5476) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:515) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
            at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 
      at android.view.ViewGroup.addViewInner(ViewGroup.java:3770) 
      at android.view.ViewGroup.addView(ViewGroup.java:3623) 
      at android.view.ViewGroup.addView(ViewGroup.java:3568) 
      at android.view.ViewGroup.addView(ViewGroup.java:3544) 
      at android.support.v4.app.NoSaveStateFrameLayout.wrap(NoSaveStateFrameLayout.java:40) 
      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:924) 
      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) 
      at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1206) 
      at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2159) 
      at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:297) 
      at android.support.v7.app.ActionBarActivity.onCreateView(ActionBarActivity.java:547) 
      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691) 
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:761) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:498) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:398) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:354) 
            at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228) 
            at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102) 
            at com.test.MainActivity.onCreate(MainActivity.java:87) 
            at android.app.Activity.performCreate(Activity.java:5451) 
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) 
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2292) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2386) 
            at android.app.ActivityThread.access$900(ActivityThread.java:169) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1277) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:136) 
            at android.app.ActivityThread.main(ActivityThread.java:5476) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:515) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
            at dalvik.system.NativeStart.main(Native Method) 
+0

请指明您要实现什么目标? – goonerDroid 2015-02-11 07:49:53

+0

好吧,我明白你想要什么,但我现在假设在抽屉里你看不到任何东西吗?它是空的吗?或崩溃? – 2015-02-11 07:54:22

+0

@AlanDeep它崩溃与'android.view.InflateException:二进制XML文件行#19:错误膨胀类片段' – giannisf 2015-02-11 07:55:15

回答

4

的问题是,你还在返回ListView

你必须返回整个View这是包装RelativeLayoutListView

这在代码中不可见,但我想这就是问题所在。

0

正如Alan所提到的,尝试从列表视图中删除xmlns:android =“http://schemas.android.com/apk/res/android”。

这行代码应该只在父xml标签中。