【问题标题】:Null Pointer when adding checkbox to ArrayList Android? [closed]向ArrayList Android添加复选框时出现空指针? [关闭]
【发布时间】:2013-12-09 10:04:34
【问题描述】:

当我将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 没有被“检查”,但我无法想象这很重要。我有一种感觉,我在应该声明或添加它之前/之后。感谢您的帮助!

【问题讨论】:

  • 查看 Para_First_Fragment 类中的第 43 行。
  • 好吧,你并没有真正初始化列表。
  • 是的,我需要一些空气。这是一个太愚蠢的错误,不容错过。向上有人得到一些代表,向下我无疑会得到反对票,而且我进一步促成了同一问题的超过 100000... =(
  • 这里真正的教训是你不应该通过stackoverflow进行调试。对于这种特殊情况,它只是: Something 为空。是否已初始化?没有。完成了。 我知道刚接触编程的人不会意识到这一点,但他们可以进行研究。
  • @ᴋᴇʏsᴇʀ 是的,我第一次投票结束我自己的问题。这本身就应该说明问题。

标签: java android checkbox arraylist


【解决方案1】:

您从未将 ArrayList 分配给 ethChecks,所以它仍然为空!

要么在声明字段的地方直接初始化:

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

或在取消引用 ethChecks 之前在某处插入以下行:

ethChecks = new ArrayList<CheckBox>();

【讨论】:

  • 杀了我吧……facepalm。当计时器到时,答案将在 10 分钟内被接受。谢谢
【解决方案2】:

您还必须初始化 ArrayList

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

【讨论】:

  • 感谢您抽出宝贵时间回答这么愚蠢的问题 +1。是时候喘口气了,我不应该错过的
猜你喜欢
  • 1970-01-01
  • 2023-03-31
  • 2013-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多