0
CharSequence[] mPhotoOptions = new CharSequence[10];
               mPhotoOptions = getResources().getStringArray(R.array.save_coupon_add_photo_options);

               if (!TextUtils.isEmpty( mItemList.mItemImagePath ) || !TextUtils.isEmpty( mResizedPhotoFilePath )  ) {
                   mPhotoOptions[2]= getResources().getString(R.string.remove_image);
               }

それは与えますArrayOutOfBoundException

4

1 に答える 1

2

コードの 1 行目で 10 個の CharSequence の配列を宣言して割り当てますが、コードの 2 行目で長さが不明な配列に置き換えられます。

(OPフォローアップに応じて)

要素を追加するには、新しい配列を作成し、古い結果をコピーする必要があります。それはあなたのための Java です。(代わりにArrayListを使用できますか???) サイズとインデックスにハードコードされた数値を使用する (これはおそらくすべきではありません)

CharSequence[] newPhotoOptions = Arrays.copyOf(mPhotoOptions, 10);  // or old length +1
newPhotoOptions[2] = thatNewValue;  // or old length

(注 - 一部の古いバージョンの Android には Arrays.copyOf() がないため、代わりに System.arraycopy() を使用することをお勧めします。)

于 2013-09-25T06:16:10.030 に答える