2014-11-24 101 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); 
相关问题