0

非常に単純なエラーだと思います。何らかの理由でメンタル ブロックが発生しているだけです。

他のオブジェクトの ArrayList を含むオブジェクトがあります。コンストラクターでリストを初期化しようとすると、初期化されないようで、コード内のリストにアクセスしようとすると nullpointer が返されます。

注文クラス変数:

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);
}
4

1 に答える 1

1

の初期化に失敗しました items。使用する

vorder = new Order(int1, int2);

それ以外の

vorder = new Order();

items内部で初期化されます

public Order(int covers, int table) {

}

デフォルトのコンストラクターではありません。

于 2013-01-10T01:02:22.720 に答える