片段 - 无法启动活动ComponentInfo {}:java.lang.NullPointerException Android

时间:2014-11-24 12:38:37

标签: java android

UPDATE :导致NullPointerException的常见错误是使用Fragment中的getActivity()而不是Inflated View v

问题:

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;
}

编辑:通过充气视图访问片段中的布局资源。

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

原因:

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

getActivity()包含Main Activity Resources而不是Fragment,这将导致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

2 个答案:

答案 0 :(得分:2)

您尝试找到ListView布局中定义的FragmentonCreateView方法将片段布局扩展为v (View),以便您使用{ListView找到v (View) 1}}如下:

v.findViewById(R.id.lv_produitsList)

而不是

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

答案 1 :(得分:0)

您需要定义View才能使用findViewById

所以改变它:

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

致:

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