gpt4 book ai didi

java - 多次打开/关闭时切换按钮崩溃

转载 作者:太空狗 更新时间:2023-10-29 13:31:55 25 4
gpt4 key购买 nike

我可以触摸切换按钮打开(一次)和关闭(一次),但如果我第三次触摸它,它会打开但不会播放音乐。从那里开始,当我再次触摸它以将其关闭时,它会崩溃。

public class Main extends Activity {

MediaPlayer mp;
Button startButton;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
mp = MediaPlayer.create(getBaseContext(), R.raw.songthing);

ToggleButton toggle = (ToggleButton) findViewById(R.id.ToggleButton);
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
mp.start();
} else {
mp.stop();
}
}
});

mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});

}

我不确定我是否应该将它放在 onCreate 方法中...我尝试移动它,但我对所有括号感到非常困惑,而且没有成功。

关于我的代码的更多信息...我试图让媒体播放器在切换按钮打开时播放歌曲,并在关闭时停止播放。

编辑:Logcat 说了一些关于 java.lang.IllegalStateException

XML:

<ToggleButton
android:id="@+id/ToggleButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:textOff="Start"
android:textOn="Stop" />

最佳答案

您可以阅读一些关于 MediaPlayer 状态的信息 here .
如果调用 stop(),则必须再次 prepare() 播放器才能start()

Once in the Stopped state, playback cannot be started until prepare() or prepareAsync() are called to set the MediaPlayer object to the Prepared state again.

如果准备播放器的时间太长,请考虑使用 pause() 后跟 seekTo(0); 作为替代方法。

关于java - 多次打开/关闭时切换按钮崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14695407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com