2016-11-05 9 views
0

アンドロイドスタジオのarraylist番号に基づいて配列の曲からコンテンツをメディアプレーヤーを使用して曲のタイトルを推測する簡単なゲームを作成しようとしています。だから私は最初にインデックスを宣言します。インデックスはランダムごとに1ずつ増加し、ユーザが(onClickメソッドを使って)答えをクリックするたびに発生します。 (:10インデックス:10サイズ)バインドされた例外のうち配列インデックス:arraylist(Androidスタジオ)のインデックスの問題

ImageButton play, answer1, answer2, answer3; 
int[] song = new int[] {R.raw.beautifulithurts, R.raw.iwontletyouwalkaway, R.raw.lebihindah, R.raw.ruletheworld, R.raw.sweetescape, R.raw.thatgirl, R.raw.thisislivingnow, R.raw.thislife, R.raw.thousandmiles, R.raw.u}; 
int[] image = new int[] {R.drawable.lvlaa, R.drawable.lvlab, R.drawable.lvlac, R.drawable.lvlad, R.drawable.lvlae, R.drawable.lvlaf, R.drawable.lvlag, R.drawable.lvlah, R.drawable.lvlai, R.drawable.lvlaj}; 
ArrayList<Integer> numbers = new ArrayList<>(); 
ArrayList<Integer> cloning = new ArrayList<>(); 
int index = 0, a = 0, b = 1, c = 2, random = 0, x = 0, y = 0, z = 0, benar = 0, salah = 0; 
MediaPlayer mp; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.game); 

     play = (ImageButton) findViewById(R.id.play); 
     answer1 = (ImageButton) findViewById(R.id.answer1); 
     answer2 = (ImageButton) findViewById(R.id.answer2); 
     answer3 = (ImageButton) findViewById(R.id.answer3); 

     for (int i = 0; i <= song.length; i++) { 
      numbers.add(i); 
     } 
     Collections.shuffle(numbers); 

     random(); 

     play.setOnClickListener(this); 
     answer1.setOnClickListener(this); 
     answer2.setOnClickListener(this); 
     answer3.setOnClickListener(this); 
    } 

    public void prepareAnswer() {...} 

    public void random() { 
     mp = MediaPlayer.create(this, song[numbers.get(index)]); 
     mp.start(); 
     prepareAnswer(); 
     answer1.setImageResource(image[x]); 
     answer2.setImageResource(image[y]); 
     answer3.setImageResource(image[z]); 
     index++; 
    } 

    @Override 
    public void onClick(View v) {...} 
} 

は、しかし、私はゲームを再起動するたびに、logcatは、エラーが表示されます。どのようにこのエラーを処理し、私がゲームを再起動するたびに、インデックスを0にリセットしますか?代わりにあなたのコードの下

+0

ここにあなたの完全なlogcatエラーを投稿してください....... – sushildlh

+0

java.lang.ArrayIndexOutOfBoundsException:長さ= 10; index = 10 at com.lucreamysong.beatupthebeat.game.random(game.java:92) at com.lucreamysong.beatupthebeat.game.onClick(game.java:118) @sushildlh – Yoel

+0

答えを見て、私は思いますそれはあなたの問題を解決する..... – sushildlh

答えて

0

使用.....

for (int i = 0; i < song.length; i++) { 
      numbers.add(i); 
     } 

注: - 問題は、あなたがここに余分な数を追加し、存在しないsongの配列リストから、余分な値にアクセスしているます。.. ...例えば: -

song have 10 values and you are trying to access 11th value .....

関連する問題