2014-12-05 116 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); 
    } 

} 

這Dday_fragment.java 的完整的代碼怎麼用onListItemClick如果我不使用ListFragment? 我想要的是顯示dday_fragment, 中的項目列表,還有另一個xml隨用戶選擇的項目ID而變化。 另一個xml將顯示項目的詳細信息。 所以我用onListItemClick來改變和設置另一個XML文本。

+0

請問您可以發佈dday_fragment完整的xml代碼嗎? – 2014-12-05 04:51:41

+0

如果使用LisstFragment擴展片段,則不需要在xml文件中使用ListView。 – Shvet 2014-12-05 04:55:45

+0

這是完整的xml代碼哈哈 – 2014-12-05 12:59:17

回答

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結束時,我不需要返回視圖?如果我這樣做,它說'視圖不能被解析爲一個變量'。 返回視圖; <--- – 2014-12-05 13:19:56

0

沒有您的佈局XML文件中的問題。確保關閉了打開的支架。這是你錯過的。

<LinearLayout> </LinearLayout> 

替代的方式來做到這一點是:

<LinearLayout /> 
+0

意外刪除我認爲ㅠㅠ – 2014-12-05 13:22:29

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

我認爲它在我發佈時被意外刪除。 – 2014-12-05 13:17:34

相關問題