2014-11-24 62 views
-3

UPDATE:導致的NullPointerException的常見錯誤是通過在片段使用getActivity()代替充氣View v的。碎片 - 無法啓動活動ComponentInfo {}:顯示java.lang.NullPointerException的Android

問題:

public class Products extends Fragment { 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.fragment_produits, container , false); 

    listProduitsList=(ListView) getActivity().findViewById(R.id.lv_produitsList);//<- Mistake here 

    /** 
    * SOME CODE HERE 
    */ 
    return v; 
} 

編輯:經由充氣視圖訪問佈局的ressource在片段。

View v = inflater.inflate(R.layout.fragment_produits, container , false); 

原因:

listProduitsList=(ListView) getActivity().findViewById(R.id.lv_produitsList); 

getActivity()包含的主要活動資源不是片段,這將導致一個NullPointerException。

FIX

listProduitsList=(ListView) v.findViewById(R.id.lv_produitsList); 

logcat的:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.x/com.example.x.Catalogue}: java.lang.NullPointerException 
+0

請發佈LogCat輸出。否則你的問題沒有意義。 – 2014-11-24 12:40:18

+0

logcat在哪裏? – 2014-11-24 12:40:19

+1

使用v not getActivity()初始化ListView:v.findViewById(R.id.lv_produitsList) – 2014-11-24 12:43:03

回答

2

你試圖找到ListView這是Fragment佈局定義,onCreateView方法,你膨脹片段佈局到v (View)讓你找到ListView使用v (View)如下:

v.findViewById(R.id.lv_produitsList) 

而不是

getActivity().findViewById(R.id.lv_produitsList) 
0

您需要定義View使用findViewById

因此改變:

listProduitsList=(ListView) getActivity().findViewById(R.id.lv_produitsList); 

要:

listProduitsList=(ListView) v.findViewById(R.id.lv_produitsList); 
相關問題