android.view.InflateException:二进制XML文件行#12:二进制XML文件行#12:错误膨胀类片段

问题描述:

我试图运行此代码时出现此错误。目的是显示一个片段列表,当用户点击列表项时,我将显示细节,到目前为止,我被困在显示片段上的列表。android.view.InflateException:二进制XML文件行#12:二进制XML文件行#12:错误膨胀类片段

E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: com.example.pc.doggie, PID: 30331 
        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.pc.doggie/com.example.pc.doggie.MainActivity}: android.view.InflateException: Binary XML file line #12: Binary XML file line #12: Error inflating class fragment 
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
         at android.app.ActivityThread.access$900(ActivityThread.java:150) 
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
         at android.os.Handler.dispatchMessage(Handler.java:102) 
         at android.os.Looper.loop(Looper.java:148) 
         at android.app.ActivityThread.main(ActivityThread.java:5417) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
        Caused by: android.view.InflateException: Binary XML file line #12: Binary XML file line #12: Error inflating class fragment 
         at android.view.LayoutInflater.inflate(LayoutInflater.java:539) 
         at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
         at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
         at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:292) 
         at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
         at com.example.pc.doggie.MainActivity.onCreate(MainActivity.java:11) 
         at android.app.Activity.performCreate(Activity.java:6294) 
         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) 
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
         at android.app.ActivityThread.access$900(ActivityThread.java:150)  
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
         at android.os.Handler.dispatchMessage(Handler.java:102)  
         at android.os.Looper.loop(Looper.java:148)  
         at android.app.ActivityThread.main(ActivityThread.java:5417)  
         at java.lang.reflect.Method.invoke(Native Method)  
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
        Caused by: android.view.InflateException: Binary XML file line #12: Error inflating class fragment 
         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:782) 
         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
         at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 
         at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
         at android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 
         at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
         at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
         at android.view.LayoutInflater.inflate(LayoutInflater.java:423)  
         at android.view.LayoutInflater.inflate(LayoutInflater.java:374)  
         at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:292)  
         at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)  
         at com.example.pc.doggie.MainActivity.onCreate(MainActivity.java:11)  
         at android.app.Activity.performCreate(Activity.java:6294)  
         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)  
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)  
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
         at android.app.ActivityThread.access$900(ActivityThread.java:150)  
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
         at android.os.Handler.dispatchMessage(Handler.java:102)  
         at android.os.Looper.loop(Looper.java:148)  
         at android.app.ActivityThread.main(ActivityThread.java:5417)  
         at java.lang.reflect.Method.invoke(Native Method)  
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
        Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list' 
         at android.support.v4.app.ListFragment.ensureList(ListFragment.java:346) 
         at android.support.v4.app.ListFragment.onViewCreated(ListFragment.java:147) 
         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1265) 
         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1472) 
         at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1691) 
         at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:3440) 
         at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:120) 
         at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:378) 
         at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:33) 
         at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:79) 
         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:754) 
         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)  
         at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)  
         at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)  
         at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)  
         at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)  
         at android.view.LayoutInflater.inflate(LayoutInflater.java:515)  
         at android.view.LayoutInflater.inflate(LayoutInflater.java:423)  
         at android.view.LayoutInflater.inflate(LayoutInflater.java:374)  
         at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:292)  
         at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)  
         at com.example.pc.doggie.MainActivity.onCreate(MainActivity.java:11)  
         at android.app.Activity.performCreate(Activity.java:6294)  
         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)  
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)  
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
         at android.app.ActivityThread.access$900(ActivityThread.java:150)  
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
         at android.os.Handler.dispatchMessage(Handler.java:102)  
         at android.os.Looper.loop(Looper.java:148)  
         at android.app.ActivityThread.main(ActivityThread.java:5417)  
         at java.lang.reflect.Method.invoke(Native Method)  
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  

主要Acitivity.java

package com.example.pc.doggie; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

} 

activity_main.xml中

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

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <fragment 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      class="com.example.pc.doggie.List_Fragment" 
      android:id="@+id/list_frag" 
      android:layout_weight="2" 
      tools:layout="@layout/list_fragment" /> 

     <fragment 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      class="com.example.pc.doggie.Details_Fragment" 
      android:id="@+id/details_frag" 
      android:layout_weight="5" 
      tools:layout="@layout/details_fragment" /> 

    </LinearLayout> 
</LinearLayout> 

List_Fragment.java

package com.example.pc.doggie; 

import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.ListFragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 

public class List_Fragment extends ListFragment { 

    public List_Fragment() { 
     // Required empty public constructor 
    } 

    @Override 
    public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

     setListAdapter(new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1 
       , getResources().getStringArray(R.array.names))); 
    } 

} 

list_fragment.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/colorAccent"> 
</FrameLayout> 

array.xml(字符串资源)

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string-array name="breed"> 
     <item>Labrador</item> 
     <item>Huskie</item> 
     <item>Spaniel</item> 
     <item>Golden Retriever</item> 
    </string-array> 

</resources> 
+0

尝试使用'

+0

我做了但是我仍然得到相同的错误 – Mathunya

更改这个文件: list_fragment.xml

<ListView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

你的片段从ListFragement延伸。这意味着你的片段布局必须有ID为android.R.id.list的ListView(以前它只是一个FrameLayout),所以现在它变成了一个ListFragment。 Android需要调用它的功能,所以它需要一个适当的ID在默认情况下的列表视图android.R.id.list

+0

它的工作,谨慎解释为什么我需要改变它? – Mathunya