Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 发布后如何再次播放MediaPlayer()_Android_Button_Android Mediaplayer - Fatal编程技术网

Android 发布后如何再次播放MediaPlayer()

Android 发布后如何再次播放MediaPlayer(),android,button,android-mediaplayer,Android,Button,Android Mediaplayer,当我点击ImageButton时,有一个声音。但是我需要release()才能播放所有按钮的声音。但当我点击两次按钮时,我的应用程序就停止了 这是我的代码: ImageButton btnda = (ImageButton) findViewById(MyActivity.this, R.id.daa); btnda.setOnClickListener(new View.OnClickListener() { @Override public void

当我点击
ImageButton
时,有一个声音。但是我需要
release()
才能播放所有按钮的声音。但当我点击两次按钮时,我的应用程序就停止了

这是我的代码:

ImageButton btnda = (ImageButton) findViewById(MyActivity.this, R.id.daa);
    btnda.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            final MediaPlayer soundda = MediaPlayer.create(DaftarHuruf.this);
            soundda.start();
            soundda.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                public void onCompletion(MediaPlayer mp) {
                    mp.reset();
                    mp.release();
                }
            });
        }
    });
以下是android监视器错误显示:

07-20 13:32:32.053 25594-25594/com.example.john.lontaraapp E/AndroidRuntime: FATAL EXCEPTION: main
                                                                         Process: com.example.john.lontaraapp, PID: 25594
                                                                         java.lang.IllegalStateException
                                                                             at android.media.MediaPlayer._start(Native Method)
                                                                             at android.media.MediaPlayer.start(MediaPlayer.java:1177)
                                                                             at com.example.john.lontaraapp.DaftarHuruf$8.onClick(DaftarHuruf.java:100)
                                                                             at android.view.View.performClick(View.java:4756)
                                                                             at android.view.View$PerformClick.run(View.java:19761)
                                                                             at android.os.Handler.handleCallback(Handler.java:739)
                                                                             at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                             at android.os.Looper.loop(Looper.java:135)
                                                                             at android.app.ActivityThread.main(ActivityThread.java:5253)
                                                                             at java.lang.reflect.Method.invoke(Native Method)
                                                                             at java.lang.reflect.Method.invoke(Method.java:372)
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:949)
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:744)
调用
release()
释放播放器和相关资源。如果要再次播放,应执行以下操作:
soundda=new MediaPlayer()
再次初始化它。。。因此,设置侦听器等等。

调用
release()
释放播放器和相关资源。如果要再次播放,应执行以下操作:
soundda=new MediaPlayer()
再次初始化它。。。因此,设置侦听器等等。

只需移动鼠标即可

final MediaPlayer soundda = MediaPlayer.create(this, R.raw.da);
内部
onClick()
之前

 soundda.start();
因此,无论您是发布还是尚未创建,在需要播放它之前,您都要创建一个
MediaPlayer

也不要使用
this
,而是使用
。this
,因为您将在
OnClickListener
中移动代码,
将被视为
OnClickListener
对象,您需要一个
上下文
对象

,只需移动

final MediaPlayer soundda = MediaPlayer.create(this, R.raw.da);
内部
onClick()
之前

 soundda.start();
因此,无论您是发布还是尚未创建,在需要播放它之前,您都要创建一个
MediaPlayer


也不要使用
this
,而是使用
。this
,因为您将在
OnClickListener
中移动代码,并且
this
将被视为
OnClickListener
对象,在调用release()并希望在release()后再次播放之后,您需要一个
上下文
对象被调用,您希望再次播放创建(this,R.raw.ka);无法解析方法。我的代码正确吗?@Adhiwhit,我不知道,你没有显示更新的代码。只有
创建(这个,R.raw.ka),这没有意义。我从我的android studio中更新了代码,创建(这个,R.raw.ka);是无法解决的method@Adhiwhit,那不是我建议做的。Isuggested
final MediaPlayer soundda=MediaPlayer.create(this,R.raw.da),而不是
创建(this,R.raw.ka)
@Adhiwhit,好的,也不要使用
this
,而是
。this
创建(this,R.raw.ka);无法解析方法。我的代码正确吗?@Adhiwhit,我不知道,你没有显示更新的代码。只有
创建(这个,R.raw.ka),这没有意义。我从我的android studio中更新了代码,创建(这个,R.raw.ka);是无法解决的method@Adhiwhit,那不是我建议做的。Isuggested
final MediaPlayer soundda=MediaPlayer.create(this,R.raw.da),而不是
创建(this,R.raw.ka)
@Adhiwhit,好的,也不要使用
这个
,而是
。这个
请不要在标题后面附加问题。接受问题的答案就是告诉别人问题已经解决了。谢谢。请不要在标题后面加上答案。接受问题的答案就是告诉别人问题已经解决了。非常感谢。