2012-01-28 9 views
0

ImageViewのために読み込むランダムアニメーションを生成しようとしています。それは動作しますが、ときどきのみです。 3つのアニメーションが選択された後、それはArrayIndexOutOfBoundsExceptionを投げて、私はなぜそれがわからないのですか?私が例外をキャッチすると、3つのアニメーションがランダムに選択され、それからどれもロードされません。ランダムアニメーションを生成する際の問題

final int[] anim = { R.anim.anim_0, R.anim.anim_1, R.anim.anim_2, 
      R.anim.anim_3, R.anim.anim_4, R.anim.anim_5 }; 

Random ran = new Random(); 

int i = ran.nextInt(6 - 1); 

mAlbum.startAnimation(AnimationUtils.loadAnimation(
         getBaseContext(), anim[i++])); 
+0

なぜ私は 'i ++'を持っていますか? – AppleGrew

答えて

1

代わりにanim[ran.nextInt(anim.length)]を試してください。これにより、配列内の要素の数(ゼロを含む)から配列の要素数までの数値が選択され、例外が防止されます。

int i = ran.nextInt(anim.length); 
mAlbum.startAnimation(AnimationUtils.loadAnimation(
        getBaseContext(), anim[i])); 
1

なぜi ++ですか?私はあなたがしたいと思うのは、乱数を再生成して、単に過去の結果を1つ増やすことではないと思います....

mAlbum.startAnimation(AnimationUtils.loadAnimation(
        getBaseContext(), anim[ran.nextInt(anim.length)])); 
関連する問題