在活动之间同步数组中的数据

时间:2017-11-23 06:17:20

标签: java android android-intent

我正在制作食物订单应用程序。我的主页上有一个名为ListView的整页MenuActivity,当我按下Button时,它会转到CartActivity页。

食物名称为food,食物图像为imgIDbutPlus butMinus调整食物量,amount保留金额每种食物的初始值为0。

我在addAmount中有一个名为minusAmountMenuAcitivity的方法会增加,减少金额。它由此类的Adapter调用。

public static void addAmount(int position) {
    amount[position] += 1;
}

转到CartActivity,我用它来传递我的所有价值。

public void goToCart(MenuItem menuItem) {
    Intent in = new Intent(MenuActivity.this, CartActivity.class);
    in.putExtra("list", amount);
    in.putExtra("imgID", imgID);
    in.putExtra("nameList", food);
    startActivity(in);
}

接收我在ArrayList中创建新CartActivity的值,以获取金额不为零的食物数据。

        // add components to array lists
        // addList, removeList are methods to add,remove in my new ArrayList created in this class
    for (int i = 0; i < amountList.length; i++) {
        if (amountList[i] != 0) {
            if (!foodListFinal.contains(foodList[i]))
                addList(amountList[i], foodList[i], imgID[i]);
        } else if (amountList[i] == 0 && !foodListFinal.isEmpty()) {
            if (foodListFinal.contains(foodList[i])) {
                index = foodListFinal.indexOf(foodList[i]);
                removeList(amountList[index], foodList[index], imgID[index]);
            }
        }
    }

另外,我在addAmount中有一个名为minusAmountCartAcitivity的方法会增加,减少量,就像MenuActivity一样。它由此类的适配器调用,与MenuActivity不同。

public static void addAmount(int position) {
    int newAmount = (amountListFinal.get(position)) + 1;
    amountListFinal.set(position, newAmount);
}

public static void minusAmount(int position) {
    int newAmount = (amountListFinal.get(position)) - 1;
    amountListFinal.set(position, newAmount);
}

这是我的问题..

当我将amount中的CartActivity减少为0并且我回到MenuActivity时,它正确地说0,但如果我再次切换到CartActivity,应用程序会崩溃指出索引超出范围的错误。

请帮助我,或者有更好的方法来做到这一点请赐教。谢谢

2 个答案:

答案 0 :(得分:0)

哪个数组导致了这个错误:&#34;说索引超出范围。&#34; ,foodList或amountList数组?它会帮助你

答案 1 :(得分:0)

我建议使用辅助存储来存储您的更改。也不建议将整个数组传递给另一个活动。使用任何数据库在其中插入更改,然后在购物车活动中检索所有数据。 这样,您就可以在各种对象中实现相同的数量状态。