2

我想在「onCreateView」方法中將LinearLayout充氣到片段中。但我一直同樣的錯誤:如何膨脹LinearLayout在一個片段?

"android.view.InflateException: Binary XML file line #7: Error inflating class fragment" 

我使用android.support.v4.app.FragmentActivity"libs"文件夾中。

主要活動:

public class GeofranceDeptActivity extends FragmentActivity{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.dept); 

    } 
} 

主要xml文件dept

<?xml version="1.0" encoding="UTF-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

    <fragment class="dauran.geofrance.DeptFragment" 
      android:id="@+id/depts" android:layout_weight="1" 
      android:layout_width="0px" 
      android:layout_height="match_parent"> 
      </fragment> 

    <FrameLayout android:id="@+id/detailsdept" android:layout_weight="1" 
      android:layout_width="0px" 
      android:layout_height="match_parent" /> 

</LinearLayout> 

的片段DeptFragment類:

public class DeptFragment extends Fragment implements OnTouchListener{ 

    Context mContext = getActivity(); 

    boolean mDualPane; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     if (container == null) { 
       return null; 
      } 

    return (LinearLayout)inflater.inflate(R.layout.dept_fragment, container, false); 
     } 


    @Override 
    public void onActivityCreated(Bundle savedState) { 
     ................etc 

,我想誇大的xml文件dept_fragment

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 
    <ImageView 
     android:id="@+id/targetDeptImage" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:src="@drawable/region_france_grand" /> 

    <ImageView 
     android:id="@+id/cacheDeptImage" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:src="@drawable/region_france_grand" /> 
    <Spinner 
     android:id="@+id/sDepartement" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignRight="@+id/targetImage" /> 

</RelativeLayout> 
</LinearLayout> 

Logcat

06-26 19:02:27.940: E/AndroidRuntime(11993): FATAL EXCEPTION: main 
06-26 19:02:27.940: E/AndroidRuntime(11993): java.lang.RuntimeException: Unable to start activity ComponentInfo{dauran.geofrance/dauran.geofrance.GeofranceDeptActivity}: android.view.InflateException: Binary XML file line #7: Error inflating class fragment 
06-26 19:02:27.940: E/AndroidRuntime(11993): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 
06-26 19:02:27.940: E/AndroidRuntime(11993): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
06-26 19:02:27.940: E/AndroidRuntime(11993): at android.app.ActivityThread.access$600(ActivityThread.java:123) 
06-26 19:02:27.940: E/AndroidRuntime(11993): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
06-26 19:02:27.940: E/AndroidRuntime(11993): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-26 19:02:27.940: E/AndroidRuntime(11993): at android.os.Looper.loop(Looper.java:137) 
06-26 19:02:27.940: E/AndroidRuntime(11993): at android.app.ActivityThread.main(ActivityThread.java:4424) 
06-26 19:02:27.940: E/AndroidRuntime(11993): at java.lang.reflect.Method.invokeNative(Native Method) 
06-26 19:02:27.940: E/AndroidRuntime(11993): at java.lang.reflect.Method.invoke(Method.java:511) 
06-26 19:02:27.940: E/AndroidRuntime(11993): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
06-26 19:02:27.940: E/AndroidRuntime(11993): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
06-26 19:02:27.940: E/AndroidRuntime(11993): at dalvik.system.NativeStart.main(Native Method) 
06-26 19:02:27.940: E/AndroidRuntime(11993): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class fragment 
06-26 19:02:27.940: E/AndroidRuntime(11993): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697) 
06-26 19:02:27.940: E/AndroidRuntime(11993): at android.view.LayoutInflater.rInflate(LayoutInflater.java:739) 
06-26 19:02:27.940: E/AndroidRuntime(11993): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
06-26 19:02:27.940: E/AndroidRuntime(11993): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
06-26 19:02:27.940: E/AndroidRuntime(11993): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
06-26 19:02:27.940: E/AndroidRuntime(11993): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:251) 
06-26 19:02:27.940: E/AndroidRuntime(11993): at android.app.Activity.setContentView(Activity.java:1835) 
06-26 19:02:27.940: E/AndroidRuntime(11993): at dauran.geofrance.GeofranceDeptActivity.onCreate(GeofranceDeptActivity.java:10) 
06-26 19:02:27.940: E/AndroidRuntime(11993): at android.app.Activity.performCreate(Activity.java:4465) 
06-26 19:02:27.940: E/AndroidRuntime(11993): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
06-26 19:02:27.940: E/AndroidRuntime(11993): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
06-26 19:02:27.940: E/AndroidRuntime(11993): ... 11 more 
06-26 19:02:27.940: E/AndroidRuntime(11993): Caused by: java.lang.IllegalStateException: Fragment dauran.geofrance.DeptFragment did not create a view. 
06-26 19:02:27.940: E/AndroidRuntime(11993): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:293) 
06-26 19:02:27.940: E/AndroidRuntime(11993): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:669) 

回答

2

Logcat可能說更多的則android.view.InflateException:二進制XML文件行#7:錯誤充氣類片段(以下檢查,看看如果你不」 t有一個實例化異常,也許你可以添加完整的異常?)。看完你的代碼後,我會假設你的DeptFragment不在dauran.geofrance包中,因爲這個android找不到它。

而且,也沒有必要來測試nullcontainer參數:

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.dept_fragment, container, false); 
} 

另外,我不認爲有必要在R.layout.deptfragmentLinearLayout包裹RelativeLayout

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <ImageView 
     android:id="@+id/targetDeptImage" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:src="@drawable/region_france_grand" /> 

    <ImageView 
     android:id="@+id/cacheDeptImage" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:src="@drawable/region_france_grand" /> 
    <Spinner 
     android:id="@+id/sDepartement" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignRight="@+id/targetImage" /> 

</RelativeLayout> 
+0

謝謝。我已添加logcat我有 – user1298799

+0

@ user1298799你是否從我的答案進行了更改,然後再次運行應用程序?你有同樣的錯誤嗎?這個錯誤又是如何發生的:你是否簡單地啓動應用程序並拋出異常,或者除了你在問題中添加的內容之外還做了其他的事情? – Luksprog

+0

現在沒問題。我只是刪除不必要的LinearLayout和容器null上的測試。非常感謝您的幫助。 – user1298799