将复选框添加到ArrayList Android时为空指针?

时间:2013-11-24 19:57:18

标签: java android checkbox arraylist

当我向CheckBox添加ArrayList时,我的程序崩溃了。我无法看到我在哪里或如何宣布CheckBox。任何帮助表示赞赏。

public class Para_First_Fragment extends Fragment {
    View view;      

    ArrayList<CheckBox> ethChecks;      
    CheckBox cb_white, cb_black, cb_asian, cb_native, cb_other;     

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        view = inflater.inflate(R.layout.para_first_fragment, container, false);            

        cb_white = (CheckBox) view.findViewById(R.id.fpc_white_cb);
        cb_black = (CheckBox) view.findViewById(R.id.fpc_black_cb);
        cb_asian = (CheckBox) view.findViewById(R.id.fpc_asian_cb);
        cb_native = (CheckBox) view.findViewById(R.id.fpc_natives_cb);
        cb_other = (CheckBox) view.findViewById(R.id.fpc_other_cb);

        ethChecks.add(cb_white); <-- Line 43
        ethChecks.add(cb_black);
        ethChecks.add(cb_asian);
        ethChecks.add(cb_native);
        ethChecks.add(cb_other);            

        return view;
    }

}

当片段加载时崩溃,我的logcat给了我以下错误

11-24 14:54:36.961: E/AndroidRuntime(3399): java.lang.NullPointerException
11-24 14:54:36.961: E/AndroidRuntime(3399):     at com.example.myproject.Para_First_Fragment.onCreateView(Para_First_Fragment.java:43)

第43行在上面的代码中注释。现在CheckBox没有被“检查”,但我无法想象这一点很重要。我有一种感觉,我在我应该之前/之后声明或添加它。谢谢你的帮助!

2 个答案:

答案 0 :(得分:3)

您从未向ethChecks分配ArrayList,因此它仍然为空!

直接在声明字段的位置初始化它:

List<CheckBox> ethChecks = new ArrayList<CheckBox>();

或在解除引用ethChecks之前在某处插入以下行:

ethChecks = new ArrayList<CheckBox>();

答案 1 :(得分:2)

您还必须初始化ArrayList

ArrayList<CheckBox> ethChecks = new ArrayList<CheckBox>();