2017-10-24 11 views
0

このコードは一度に動作しません。それを一度クリックすると音楽が停止しますが、もう一度クリックすると再び音楽が始まりません。もう一度チェックしてもトグルボタンが機能しない

ToggleButton sound; 
MediaPlayer sip; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    sound = (ToggleButton) findViewById(R.id.Sound1); 
    sip = MediaPlayer.create(Naruto.this, R.raw.sip2); 
    sip.start(); 
    sound.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View arg0) { 
      if (sound.isChecked() == true) { 
       sip.start(); 
      } else { 
       sip.start(); 
      } 
     } 
    }); 
} 
+0

チェックこの1 https://stackoverflow.com/questions/21277490/example-on-togglebutton –

+0

回答TIを更新してください。この場合(sound.isChecked()){ sip.start(); } else { sip.start(); } – impathuri

答えて

0

以下のコードを試してください。

 sound.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       Boolean switchState = holder.simpleSwitch.isChecked(); 

       if (switchState==true) 
       { 
        sip.start(); 
       } 
       else 
       { 
        sip.stop(); 
       } 
      } 
     }); 
0

MediaPlayerを設定する必要があります。試してみてください:

sound.setOnClickListener(new View.OnClickListener(){ 
    public void onClick(View arg0) { 
     if (sound.isChecked()==(true)){ 
      sip.setDataSource(filePath); 
      sip.prepare(); 
      sip.start(); 
     }else 
     { 
      sip.release(); 
      sip = null; 
     } 

}}); 
+1

'sip.setDataSource(filePath);'他の部分で 'sip = null'を初期化したため、再度ボタンをクリックしたときにヌルポインタ例外を生成します。 –

+0

はい、' filePath'をファイルパスで置き換える必要があります。その行を 'sip = MediaPlayer.create(Naruto.this、R.raw.sip2);'に置き換えてみてください。それが動作するか教えてください – Laur89

0

これを試すことができます。

sound.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() 
{ 
    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
    { 
     if(isChecked) 
     { 
      sip.start(); 
     } 
     else 
     { 
      sip.stop(); 
     } 
    } 
}); 
関連する問題