2011-12-19 3 views
0

у меня есть эти два варианта в меню деятельностимедиаплеер звуковой остановки() не работает

вариант один начинает музыкальную дорожку и второй вариант должен остановить его, но это не так.

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    MediaPlayer mpSoundTrack = MediaPlayer.create(this, R.raw.app_score); 

    switch (item.getItemId()) { 
     case R.id.icon:  Toast.makeText(this, "Music On!", Toast.LENGTH_LONG).show(); 
     mpSoundTrack.start(); 
          break; 
     case R.id.icontext: Toast.makeText(this, "Music Off!", Toast.LENGTH_LONG).show(); 
     mpSoundTrack.stop(); 
          break; 
    } 
    return true; 
    } 
+0

Действительно ли игрок играет что-то в то время, когда вы нажимаете кнопку остановки? –

+0

Да, он воспроизводил музыкальный файл, который запускается, когда пользователь нажимает на первый вариант переключателя. Бадди ниже показал мне, как это исправить. спасибо за ваш интерес. – TroothHertz

ответ

3

Каждый раз, когда вы создаете новый медиапланер, вы останавливаете новый, а не старый. Вы должны сохранить ссылку на него:

private MediaPlayer mpSoundTrack = null; 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.icon:  
      Toast.makeText(this, "Music On!", Toast.LENGTH_LONG).show(); 
      mpSoundTrack = MediaPlayer.create(this, R.raw.app_score); 
      mpSoundTrack.start(); 
      break; 
     case R.id.icontext: 
      Toast.makeText(this, "Music Off!", Toast.LENGTH_LONG).show(); 
      if(mpSoundTrack != null) 
       mpSoundTrack.stop(); 
      break; 
    } 
    return true; 
} 
+0

Очень важно. Я не знаю, стоит ли пытаться сохранить звук при изменении активности или нет. Задание должно быть загружено через 2 часа :). Но, искренне, вы получили мое спасибо – TroothHertz

+0

Вы все равно можете остановить его в 'onPause()' таким образом, в свою очередь вы потеряете ссылку на медиаплеер. – MByD

Смежные вопросы