2014-12-05 6 views
-1

이 내가InflateException : 바이너리 XML 파일

12-05 13:26:18.102: E/AndroidRuntime(10101): FATAL EXCEPTION: main 
12-05 13:26:18.102: E/AndroidRuntime(10101): Process: com.example.project_1_4, PID: 10101 
12-05 13:26:18.102: E/AndroidRuntime(10101): java.lang.RuntimeException: Unable to start activity   
ComponentInfo{com.example.project_1_4/   
com.example.project_1_4.MainActivity}: android.view.InflateException: Binary XML file line #14:  
Error inflating class fragment 

내 xml 파일을 가지고 오류입니다 - 내가 게시 할 때 내가 브래킷을 놓친 생각합니다. 지금 나는 그것을 바로 잡는다.

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

소스 코드

import java.sql.SQLException; 
import java.util.ArrayList; 
import java.util.zip.Inflater; 

import android.app.ListFragment; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.InflateException; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 

public class Dday_fragment extends ListFragment{ 

    ArrayList<Detail> detailList = new ArrayList<Detail>(); 
    ArrayList<String> detailName = new ArrayList<String>(); 
    DetailOperation DetailDBOperation; 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     View view = new View(getActivity()); 
     try{ 
     view = inflater.inflate(R.layout.dday_fragment, container, false); 
     }catch (InflateException e){ 
     } 

     DetailDBOperation = new DetailOperation(null); 
     try { 
      DetailDBOperation.open(); 
     } catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 


     if(DetailDBOperation.getAllDetail()!=null){ 
     detailList = DetailDBOperation.getAllDetail(); 
     }else{ 
      detailList = null; 
     } 

     int size = detailList.size(); 

     for(int i = 0; i < size; i++){ 
      detailName.add(detailList.get(i).getSubjectName()); 
     } 
     ArrayAdapter<String> adapter = 
       new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, detailName); 
     setListAdapter(adapter); 
     return view; 
    } 
    @Override 
    public void onListItemClick(ListView l, View v, int position, long id) { 
     // TODO Auto-generated method stub 
     super.onListItemClick(l, v, position, id); 
     Detail_fragment dtf = (Detail_fragment) getFragmentManager().findFragmentById(R.layout.detail_fragment); 
     dtf.change(position); 
     getListView().setSelector(android.R.color.holo_red_dark); 
    } 

} 

이 내가 ListFragment를 내가 onListItemClick을 사용하는 방법을 Dday_fragment.java 의 전체 코드를 사용하지 않는 경우? 내가 원하는 것은 dday_fragment의 항목 목록을 표시하는 것이며, 이고 사용자가 선택한 항목 ID로 변경되는 또 다른 xml이 있습니다. 다른 xml이 항목의 세부 정보를 표시합니다. 그래서 다른 XML에서 텍스트를 변경하고 설정하기 위해 onListItemClick을 사용했습니다.

+0

dday_fragment의 전체 xml 코드를 게시 할 수 있습니까? –

+0

조각을'LisstFragment'로 확장하는 경우 xml 파일에서'ListView'를 사용할 필요가 없습니다. – Shvet

+0

전체 코드는 하하 –

답변

0

LinearLayout">" 태그를 사용해야합니다.

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

다른 것은 당신이 onCreateView() 방법에서보기를 팽창하고 또한 문제가 있으므로 두 번 View의 인스턴스를 만들려고합니다. 이것을 할 필요가 없습니다. 따라서 변경하십시오

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

    try{ 

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

    } catch (InflateException e){ 
    } 

    DetailDBOperation = new DetailOperation(getActivity()); 
    try { 
    DetailDBOperation.open(); 
    } catch (SQLException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 
+0

이 onCreateView가 끝나면보기를 반환하지 않아도됩니까? 내가 그렇게한다면 '뷰는 변수로 해석 될 수 없습니다'라고 말합니다. 돌아 가기보기; <--- –

0

레이아웃 XML 파일에 문제가 있습니다. 열려있는 브래킷을 닫아야합니다. 여기 당신이 놓친 것이 있습니다. 이 작업을 수행하는

<LinearLayout> </LinearLayout> 

대체 방법은 다음과 같습니다

<LinearLayout /> 
+0

실수로 지워졌습니다. ㅠㅠ –

0

당신은 속성의 최종 묶으 선언하는 것을 잊었다. 아래처럼하십시오 :

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 
     <ListView 
      android:id="@android:id/list" 
      android:layout_width="match_parent" 
      android:layout_height="410dp" > 
     </ListView> 
</LinearLayout> 
+0

나는 게시 할 때 우연히 지워 버렸다고 생각합니다. –