2017-10-24 19 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

확인이 하나 https://stackoverflow.com/questions/21277490/example-on-togglebutton –

+0

이 경우 (sound.isChecked()) { sip.start() 응답 TI를 업데이트하십시오; } 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);'else 부분에'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(); 
     } 
    } 
});