2017-05-04 2 views
0

이 코드를 실행하려고하면이 오류가 발생합니다. 목표는 조각에 목록을 표시하는 것입니다. 사용자가 목록 항목을 클릭하면 세부 정보가 표시됩니다. 지금까지 조각에 목록을 표시하는 데 막혔습니다.android.view.InflateException : 이진 XML 파일 줄 # 12 : 이진 XML 파일 줄 # 12 : 클래스 조각을 inflating하는 중 오류가 발생했습니다.

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

'class' 대신'

+0

하지만 난 여전히 같은 오류가 발생했습니다 – Mathunya

답변

1

변경이 파일 :

<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에서 확장 list_fragment.xml. 그것은 조각 레이아웃이 id android.R.id.list (이전에는 단지 FrameLayout이었습니다)의 ListView를 가져야 함을 의미하므로 ListFragment가됩니다. 안드로이드는 기본적으로리스트 뷰에서 적절한 ID를 필요로하므로 안드로이드에서 함수를 호출해야합니다. android.R.id.list

+0

그것은, 내가 왜 그것을 변경하는 데 필요한 설명 신경? – Mathunya

관련 문제