切换仅在第一次工作

时间:2016-11-25 12:43:10

标签: java android

我正在尝试使用切换按钮在按钮“开启”时播放声音,并在按钮“关闭”时停止声音。

这似乎仅在我第一次在开/关按钮之间切换时才起作用。

ToggleButton toggle = (ToggleButton) findViewById(R.id.toggleButton1);

toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
  if (isChecked) {
   // The toggle is enabled
   sound1.start();
  } else {
   // The toggle is disabled
   sound1.stop();
  }
 }
});

2 个答案:

答案 0 :(得分:3)

因为你调用了方法stop()。 有方法的描述:

调用stop()停止播放并使处于Started,Paused,Prepared或PlaybackCompleted状态的MediaPlayer进入Stopped状态。     一旦处于Stopped状态,在调用prepare()或prepareAsync()以再次将MediaPlayer对象设置为Prepared状态之前,无法开始播放。     调用stop()对已处于Stopped状态的MediaPlayer对象没有影响。

如何正确发挥,你只需要访问这个谷歌的网站。 click me.

答案 1 :(得分:0)

所以你可以做的最好的事情是使用类常量来检查标志是否已经设置。在onPause / onStop / OnDestroy时,您需要将它保存到savedCacheInstance,然后重新加载它。类似的东西:

boolean isMusicPlaying = false;

如果你在onCreate&中使用savedInstanceCache保存它。 onStop / onDestroy,您可以控制旋转和启动/退出之间的播放。 class属性也在侦听器的类范围内,因此您执行的任何操作都应更新类属性。识别任何问题的最佳方法当然是使用调试器。这样你就可以控制播放功能,看看哪个功能正在破坏。