2011-08-08 17 views
0

このコードでNullPointerExceptionが表示される理由は誰にでも分かりますか?コードは、基本的にMediaPlayer配列を作成して、ループして一度にすべてのメディアプレイヤーを停止/開始できるようにしています。また、ボリュームを制御するシークバーにもリンクされています。MediaPlayer配列が原因でヌルポインタが発生する

private MediaPlayer[] media; 


/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    //media players 

    media[0] = MediaPlayer.create(this, R.raw.drums); 



    media[1] = MediaPlayer.create(this, R.raw.bass); 


    media[2] = MediaPlayer.create(this, R.raw.synth); 


    media[3] = MediaPlayer.create(this, R.raw.snare); 


    media[4] = MediaPlayer.create(this, R.raw.wobble); 


    for(int i=0;i<media.length;i++){ 
     media[i].start(); 
     media[i].setLooping(true); 
     media[i].setVolume(0,0); 
    } 


    //drums seekbar 

    final SeekBar volControl = (SeekBar)findViewById(R.id.volbar); 
    volControl.setMax(maxVolume);  
    volControl.setProgress(0); 
    volControl.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 



     @Override 
     public void onStopTrackingTouch(SeekBar arg0) { 
      // TODO Auto-generated method stub 

     } 


     @Override 
     public void onStartTrackingTouch(SeekBar arg0) { 
      // TODO Auto-generated method stub 
     } 

     @Override 
     public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) { 
      // TODO Auto-generated method stub 

      media[0].setVolume(arg1, arg1); 

     }      

    });  

答えて

3

media=new MediaPlayer[5]; 

のような使用して、

media[0] = MediaPlayer.create(this, R.raw.drums); 
media[1] = MediaPlayer.create(this, R.raw.bass); 
media[2] = MediaPlayer.create(this, R.raw.synth); 
media[3] = MediaPlayer.create(this, R.raw.snare); 
+0

あなたは歓迎です。私は/ upvotingを受け入れることも感謝の気持ちです – Rasel

0

デュードあなたはとにかく

....それが役立ちます。この方法を試してみてください、メディアプレーヤアレイにサイズを与えていません

プライベートMediaPlayer [] mediaPlayer;

とあなたの活動ののonCreateメソッドでそれを

のMediaPlayer =新しいMediaPlayerの[10]のような大きさを与えます。

関連する問題