2015-02-11 78 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標籤中。