【问题标题】:Syncing the data in arrays between activities [duplicate]在活动之间同步数组中的数据[重复]
【发布时间】:2017-11-23 06:17:19
【问题描述】:

我正在制作一个食品订购应用。我的主页上有一个完整的页面ListView,名为MenuActivity,当我按下它时,有一个Button,它会指向CartActivity页面。

我有数组 food 用于食物名称,imgID 用于食物图像,butPlus butMinus 用于调整食物量,amount 用于保持每种食物的初始值为 0。

我在MenuAcitivity 中有一个名为addAmountminusAmount 的方法,它会增加、减少数量。它由此类的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);
}

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

        // 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]);
            }
        }
    }

另外,我在CartAcitivity 中有一个名为addAmountminusAmount 的方法,它会像MenuActivity 一样增加、减少数量。由与MenuActivity不同的该类的Adapter调用。

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

这是我的问题..

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

请帮我解决这个问题,或者有没有更好的方法来做到这一点,请赐教。谢谢你

【问题讨论】:

    标签: java android android-intent


    【解决方案1】:

    哪个数组导致了这个错误:“说索引超出范围。” 、foodList 还是 amountList 数组?它会帮助你

    【讨论】:

    • 感谢您的回答!!我现在解决了:)
    【解决方案2】:

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

    【讨论】:

    • 谢谢!!我想我正在使用 SQLite 让它工作:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    相关资源
    最近更新 更多