2011-12-19 128 views
0

我有一个活动的菜单这两个选项媒体播放器声音停止()不工作

选择一个启动音乐曲目方案(2)应该停止了,但事实并非如此。

@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

玩家在按下停止按钮时玩什么东西? – 2011-12-19 09:58:31

+0

是的,它正在播放用户单击开关的第一个选项时启动的音乐文件。下面的好友向我展示了如何解决这个问题。谢谢你的兴趣。 – TroothHertz 2011-12-19 10:13:53

回答

3

每次创建新的mediaPlayer时,都会停止一个新的mediaPlayer,而不是旧的。你应该保留一个参考:

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 2011-12-19 10:10:33

+0

你仍然可以通过'onPause()'这种方式来阻止它,以你的方式失去了对媒体播放器的引用。 – MByD 2011-12-19 10:12:48