首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >.IllegalStateException on CheckBox

.IllegalStateException on CheckBox
EN

Stack Overflow用户
提问于 2014-07-17 13:49:39
回答 1查看 153关注 0票数 0

我正在做一个需要几个媒体播放器和onTouchListener的项目。我想要添加CheckBox和如果复选框,循环Mp。但我得到了这个错误,我不知道为什么。这是我的代码:

代码语言:javascript
运行
复制
CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox1);
        checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView,
                    boolean isChecked) {
                if (isChecked == true) {
                    mp1.setLooping(true);
                    mp2.setLooping(true);
                    mp3.setLooping(true);
                    mp4.setLooping(true);
                    mp5.setLooping(true);
                    mp6.setLooping(true);
                    mp7.setLooping(true);
                    mp8.setLooping(true);
                    mp9.setLooping(true);
                    mp10.setLooping(true);
                    mp11.setLooping(true);
                    mp12.setLooping(true);
                    mp13.setLooping(true);
                    mp14.setLooping(true);
                    mp15.setLooping(true);
                    Toast.makeText(MainClass.this, "Looping On",
                            Toast.LENGTH_SHORT).show();
                } else {
                    mp1.setLooping(false);
                    mp2.setLooping(false);
                    mp3.setLooping(false);
                    mp4.setLooping(false);
                    mp5.setLooping(false);
                    mp6.setLooping(false);
                    mp7.setLooping(false);
                    mp8.setLooping(false);
                    mp9.setLooping(false);
                    mp10.setLooping(false);
                    mp11.setLooping(false);
                    mp12.setLooping(false);
                    mp13.setLooping(false);
                    mp14.setLooping(false);
                    mp15.setLooping(false);
                    Toast.makeText(MainClass.this, "Looping Off",
                            Toast.LENGTH_SHORT).show();
                }
            }
        });

和议员:

代码语言:javascript
运行
复制
    if (id == R.id.sound5) {
                if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
                    pressed = true;
                    mp5 = MediaPlayer.create(MainClass.this, R.raw.item5);
                    mp5.start();
                    sound5.setBackgroundResource(R.drawable.button_pressed);
                } else if (event.getAction() == android.view.MotionEvent.ACTION_UP) {
                    pressed = false;
                    mp5.stop();
                    mp5.release();
                    sound5.setBackgroundResource(R.drawable.button_normal);
                }

07-17 15:41:14.272: W/dalvikvm(16742): threadid=1: thread exiting with uncaught exception (group=0x41a138b0)
07-17 15:41:14.282: E/AndroidRuntime(16742): FATAL EXCEPTION: main
07-17 15:41:14.282: E/AndroidRuntime(16742): java.lang.IllegalStateException
07-17 15:41:14.282: E/AndroidRuntime(16742):    at android.media.MediaPlayer.setLooping(Native Method)
07-17 15:41:14.282: E/AndroidRuntime(16742):    at soundmaniacs.com.MainClass$1.onCheckedChanged(MainClass.java:96)
07-17 15:41:14.282: E/AndroidRuntime(16742):    at android.widget.CompoundButton.setChecked(CompoundButton.java:126)
07-17 15:41:14.282: E/AndroidRuntime(16742):    at android.widget.CompoundButton.toggle(CompoundButton.java:87)
07-17 15:41:14.282: E/AndroidRuntime(16742):    at android.widget.CompoundButton.performClick(CompoundButton.java:99)
07-17 15:41:14.282: E/AndroidRuntime(16742):    at android.view.View$PerformClick.run(View.java:17903)
07-17 15:41:14.282: E/AndroidRuntime(16742):    at android.os.Handler.handleCallback(Handler.java:730)
07-17 15:41:14.282: E/AndroidRuntime(16742):    at android.os.Handler.dispatchMessage(Handler.java:92)
07-17 15:41:14.282: E/AndroidRuntime(16742):    at android.os.Looper.loop(Looper.java:213)
07-17 15:41:14.282: E/AndroidRuntime(16742):    at android.app.ActivityThread.main(ActivityThread.java:5225)
07-17 15:41:14.282: E/AndroidRuntime(16742):    at java.lang.reflect.Method.invokeNative(Native Method)
07-17 15:41:14.282: E/AndroidRuntime(16742):    at java.lang.reflect.Method.invoke(Method.java:525)
07-17 15:41:14.282: E/AndroidRuntime(16742):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
07-17 15:41:14.282: E/AndroidRuntime(16742):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
07-17 15:41:14.282: E/AndroidRuntime(16742):    at dalvik.system.NativeStart.main(Native Method)

第96行是:

代码语言:javascript
运行
复制
mp1.setLooping(true);

有人能告诉我我做错了什么吗?难道是因为下院议员不玩吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-17 14:45:30

您得到一个IllegalStateException,因为您在MediaPlayer对象上调用release(),这使它处于结束状态。当一个MediaPlayer达到这种状态时,“不能再使用它了,也没有办法将它带回到任何其他状态。”这意味着调用播放机上的setLooping()将导致上述异常.避免这种情况的最简单方法是删除对release()的调用。如果您确实希望尽可能释放播放机,以使资源的使用量降到最低,那么您需要确保在调用setLooping()时,播放机是重新实例化的,并且处于有效状态。

引文来源于医生,给你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24805437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档