2014-10-10 90 views
1

我有問題,當我想在ListView上設置適配器時,我得到一個NullPointExeption。 在我使用ListFragment和一個簡單的適配器擴展了Fragment之前,這有效,但問題是,我在這個活動中有3個Fragments,都帶有ListViews,並且我得到了顯示錯誤(顯示片段中的錯誤列表)。所以我決定在Listview上設置每個Fragment自己的ID,但現在它不起作用。帶有ListView的片段:setAdapter上的NullPointerException

錯誤listview.setAdapter(適配器):

在 de.resper.e2cast.MainFragmentLive.onCreateView(MainFragmentLive.java:46)顯示java.lang.NullPointerException

片段:

import android.os.Bundle; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ImageButton; 
import android.widget.ListView; 

import java.util.ArrayList; 
import java.util.List; 

import de.resper.e2cast.classes.globalBox; 
import de.resper.e2cast.helper.getXml; 
import de.resper.e2cast.helper.parseXml; 

public class MainFragmentLive extends android.support.v4.app.Fragment { 

    private List<String> bouquetListString; 
    private ArrayAdapter<String> adapter; 
    private globalBox activeBox; 
    private ListView listview; 

    @Override 
    public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_main_live, container, false); 
     activeBox = ((globalBox) getActivity().getApplicationContext()); 
     bouquetListString = new ArrayList<String>(); 
     bouquetListString.add("loading..."); 
     if(activeBox.isInit()){ 
      if(activeBox.getBouquets().size() > 0 && activeBox.getBouquets().get(2).size() > 0){ 
       bouquetListString = activeBox.getBouquets().get(2); 
      }else{ 
       Log.d("Load Bouquet", "XML"); 
       getBouquetBox(); 
      } 
     } 
     listview = (ListView) getActivity().findViewById(R.id.listLive); 
     adapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1, bouquetListString); 
     listview.setAdapter(adapter); 

     ImageButton reloadBouquet = (ImageButton) view.findViewById(R.id.reloadBouquet); 
     reloadBouquet.setOnClickListener(new View.OnClickListener(){ 
      @Override 
      public void onClick(View arg0) { 
       getBouquetBox(); 
      } 
     }); 

     setHasOptionsMenu(true); 
     return view; 
    } 


    public void getBouquetBox(){ 
     getXml.DownloadCompleteListener dcl = new getXml.DownloadCompleteListener() { 
      @Override 
      public void onDownloadComplete(String result) { 
       bouquetListString.clear(); 
       String [] tags = {"e2servicereference", "e2servicename"}; 
       List<List<String>> bouquetsList = parseXml.parseXmlByTag(result, tags); 
       activeBox.addBouquets(bouquetsList); 
       bouquetListString.addAll(activeBox.getBouquets().get(2)); 
       adapter.notifyDataSetChanged(); 
      } 
     }; 
     Log.d("MyLogger", "XML Request GET BOUQUET"); 
     getXml downloader = new getXml(dcl); 
     downloader.execute("http://" + activeBox.getIpPort() + "/web/getservices"); 
    } 
} 

片段XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:layout_margin="8dp"> 
     <TextView 
      android:layout_width="0dip" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.8" 
      android:text="@string/selectBouquet" 
      style="@style/header1"/> 
     <ImageButton 
      android:layout_width="0dip" 
      android:layout_height="wrap_content" 
      android:id="@+id/reloadBouquet" 
      android:src="@drawable/ic_action_refresh" 
      android:contentDescription="@string/search" 
      android:layout_weight=".20" 
      android:layout_gravity="bottom"/> 
    </LinearLayout> 
    <View 
     android:layout_width="fill_parent" 
     android:layout_height="1dp" 
     android:background="@android:color/darker_gray"/> 
    <ListView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/listLive" /> 
</LinearLayout> 
+0

你能在這裏發表一個堆棧跟蹤? – 2014-10-10 17:56:32

回答

3

使用view,而不是getActivity()來初始化的ListView因爲ListView的是片段的佈局,而不是活動裏:

listview = (ListView) view.findViewById(R.id.listLive); 
+0

thx求助,作品 – Laire 2014-10-10 18:03:39

相關問題