【问题标题】:Can't initialise ArrayList无法初始化 ArrayList
【发布时间】:2013-01-10 00:55:15
【问题描述】:

我敢肯定,这是非常简单的错误,只是由于某种原因出现了心理障碍!

我有一个包含其他对象的 ArrayList 的对象。当我尝试在构造函数中初始化列表时,它似乎没有初始化,当我尝试访问代码中的列表时,我得到一个空指针。

订单类变量:

private int covers;
    private int table;
    private ArrayList<MenuItem> items;

这是 Order 类:

public Order(int covers, int table) {
    super();
    this.covers = covers;
    this.table = table;
    this.items = new ArrayList<MenuItem>();
}

这是 MainActivity 中导致我出现问题的代码:

order = new Order();
    order.setCovers(2);
    order.setTable(1);
    order.addToOrder(new MenuItem("Item 1", 12.99));
    Toast.makeText(getApplicationContext(), "order size: " + order.getItems().size(), Toast.LENGTH_SHORT).show();

我希望 Toast 显示“1”。但是,当我运行调试器时,我注意到订单对象 ArrayList 属性等于 null。

知道为什么吗?提前致谢!

编辑:addToOrder 方法:

public void addToOrder(MenuItem m){
    items.add(m);
}

【问题讨论】:

  • 你能告诉我们你的addToOrder方法吗?
  • @mango 我用方法更新了我的问题

标签: android arraylist nullpointerexception


【解决方案1】:

您未能初始化items。使用

vorder = new Order(int1, int2);

而不是

vorder = new Order();

items在里面初始化

public Order(int covers, int table) {

}

不在默认构造函数上。

【讨论】:

  • 你的回答让我看到了我的错误。问题是我正在调用默认构造函数,而不是在构造函数中初始化项目。谢谢。
  • 您是否熟悉 Parcelable 界面?
  • 是的,我是。尝试在活动之间传递对象时,这是我最喜欢的。
  • 我成功地在两个活动之间传递了 Order 对象。但是,当我尝试使用 arraylist 传递对象时,出现错误。我可以使用dest.writeList(items); 将arraylist 读入parcel 中。但是我不知道如何使用readArrayList(loader); 从包裹中检索它。你知道怎么做吗?
  • 仅凭这些信息无法判断。如果你还没有,你可以创建一个新问题吗?
猜你喜欢
  • 1970-01-01
  • 2018-03-15
  • 1970-01-01
  • 2018-09-04
  • 2015-06-28
  • 1970-01-01
  • 1970-01-01
  • 2011-05-28
  • 1970-01-01
相关资源
最近更新 更多