2017-11-23 5 views
1

私はフードオーダーアプリを作っています。私のメインページにはMenuActivityというフルページListViewがあり、それを押すとButtonがあり、それはCartActivityページを意図しています。アクティビティ間でデータを同期させる

私は呼び出されたメソッドを持って0

の初期値と各食物の量を維持するために、食品及びamountの量を調整するために、食品名のアレイfood、食物画像のimgIDbutPlusbutMinusを有しますaddAmount,をMenuAcitivityに増やすと、量が減少します。このクラスの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]); 
      } 
     } 
    } 

はまた、私はちょうどMenuActivityのように量を減らし、増加しますCartAcitivityminusAmountaddAmountと呼ばれる方法があります。 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); 
} 

私の問題が..です

私は0からCartActivityamountを減少させ、私はそれが正しく0を言うMenuActivityに戻って行きましたが、

私はエラーで CartActivityに再びアプリのクラッシュを切り替えた場合限界を超えていると言っている。

これを手伝ってください、またはこれを行うにはより良い方法がありますか教えてください。ありがとうございました

答えて

0

このエラーの原因となった配列: "indexing bound。" 、foodListまたはamountList配列?それはあなたを助けるつもりです

+0

お返事ありがとうございます。私はそれが今働いた:) – Triniel

0

変更を保存するためにセカンダリストレージを使用することをお勧めします。配列全体を別のアクティビティに渡すことはお勧めしません。データベースに変更を挿入し、カートのアクティビティですべてのデータを取得します。 この方法では、さまざまなオブジェクトで同じ状態の状態を達成できます。

+0

ありがとうございました!私はそれがSQLiteを使用して動作するようになっていると思う:D – Triniel

関連する問題