2013-01-10 114 views
0

非常简单的错误我确定,出于某种原因只是有一个心理障碍!无法初始化ArrayList

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

Order类变量:

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(); 

我期望吐司显示“1”。但是,当我运行调试器时,我发现订单对象ArrayList属性等于null。

任何想法,为什么?提前致谢!

编辑:addToOrder方法:

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

你能告诉我们你的'addToOrder'方法吗? – mango

+0

@mango我用方法更新了我的问题 – Javacadabra

回答

1

你初始化失败items。使用

vorder = new Order(int1, int2); 

,而不是

vorder = new Order(); 

items在里面

public Order(int covers, int table) { 

} 

初始化不是在默认的构造函数。

+0

您的回答让我看到了我的错误。问题是我正在调用默认的构造函数,而不是在构造函数中初始化项目。谢谢。 – Javacadabra

+0

是的。很高兴帮助 –

+0

您是否熟悉Parcelable接口? – Javacadabra