2013-01-10 162 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