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
答案 0 :(得分:2)
您尝试找到ListView
布局中定义的Fragment
,onCreateView
方法将片段布局扩展为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);