2016-11-25 68 views
0

我正尝试使用切换按钮在按钮处于“开”时播放声音,并在按钮处于“关”时停止声音。切换仅在第一次使用

这似乎只适用于当我第一次开启/关闭按钮之间切换。

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(); 
    } 
} 
}); 
+0

您是否检查'isChecked'是否正常工作,并且每次点击事件都发生变化? –

回答

3

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

调用stop()会停止播放,并使MediaPlayer处于已启动,暂停,准备或播放完成状态以进入停止状态。 一旦进入停止状态,直到调用prepare()或prepareAsync()以再次将MediaPlayer对象设置为Prepared状态时才能开始播放。 调用stop()对已处于停止状态的MediaPlayer对象没有影响。

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

+0

谢谢你,这是因为我使用了stop()方法,我选择使用暂停(),然后seekTo(0)将我的声音重置为开始。 – Martin

0

因此,最好的办法是使用类常量来检查标志是否已设置。您需要在onPause/onStop/OnDestroy时将其保存到savedCacheInstance中,然后重新加载它。喜欢的东西:

boolean isMusicPlaying = false; 

如果您保存此使用savedInstanceCache两个的onCreate &的onStop /的onDestroy,您可以控制旋转的播放,并开始UPS /退出。类属性也在侦听器的类范围内,以便您执行的任何操作都应更新类属性。识别任何问题的最好方法当然是使用调试器。这样你就可以控制播放功能并查看哪些是中断的。