Android 故意或意外退出对话后关闭音频

Android 故意或意外退出对话后关闭音频,android,onclick,Android,Onclick,这是我的主要活动中代码的一部分。 StopWatch 1是在MainActivity中调用的图像按钮: stopwatch1 = (ImageButton)findViewById(R.id.stopwatch1); 我尝试过寻找有关如何使用dialog.setOnDismissListener的线索,但是,在故意或意外退出对话后,没有合适的答案来帮助我消除音频。任何帮助都将不胜感激 stopwatch1.setOnClickListener(new

这是我的主要活动中代码的一部分。 StopWatch 1是在MainActivity中调用的图像按钮:

           stopwatch1 = (ImageButton)findViewById(R.id.stopwatch1);
我尝试过寻找有关如何使用dialog.setOnDismissListener的线索,但是,在故意或意外退出对话后,没有合适的答案来帮助我消除音频。任何帮助都将不胜感激

           stopwatch1.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        final Dialog mmDialog1 = new Dialog(context);
                        mmDialog1.setContentView(R.layout.countdowntimer);
                        mmDialog1.setTitle("Stop-watch");            
                        Button ddButton1 = (Button) mmDialog1.findViewById(R.id.countdown_exit);
                        final Button ddButton2 = (Button) mmDialog1.findViewById(R.id.countdown_start);
                        final TextView timeview = (TextView) mmDialog1.findViewById(R.id.timeview);
                        ddButton2.setTag(1);

                        ddButton2.setOnClickListener(new OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                final int status = (Integer) v.getTag();

                                if (status == 1) {
                                    ddButton2.setText("Stop");
                                    countDownTimer = new CountDownTimer(60000, 1000) {

                                        public void onTick(long millisUntilFinished) {
                                            int time = (int) (millisUntilFinished/1000);
                                            timeview.setText(Integer.toString(time));
                                        }
                                        @Override
                                        public void onFinish() {
                                            timeview.setText("60");
                                            ddButton2.setText("Start");
                                            MediaPlayer stop = MediaPlayer.create(context, R.raw.stop);
                                            stop.start();
                                        }
                                    }.start();
                                    v.setTag(0);

                                } else {
                                    ddButton2.setText("Start");
                                    timeview.setText("60");
                                    countDownTimer.cancel();
                                    v.setTag(1);
                                }
                            }

                        });

                        ddButton1.setOnClickListener(new OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                mmDialog1.dismiss();
                            }
                        });

                        mmDialog1.show();
                    }
                });

我的建议是实现一个接口。当对话框关闭时,让回调函数关闭媒体播放器

这是一个简单的例子

接口

然后在调用活动中实现接口

活动

此外,您还可以添加一个布尔值来检查对话框是否显示如下所示

boolean isShowing = mDialog.isShowing();

然后,如果这是错误的,您可以随时关闭媒体播放器。

因此,我使用了Jawascript中的一些指针,并对代码进行了一些编辑,现在它可以工作了:

            stopwatch1.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        final Dialog mmDialog1 = new Dialog(context);
                        mmDialog1.setContentView(R.layout.countdowntimer);
                        mmDialog1.setTitle("Stop-watch");            
                        Button ddButton1 = (Button) mmDialog1.findViewById(R.id.countdown_exit);
                        final Button ddButton2 = (Button) mmDialog1.findViewById(R.id.countdown_start);
                        final TextView timeview = (TextView) mmDialog1.findViewById(R.id.timeview);
                        final MediaPlayer stop = MediaPlayer.create(context, R.raw.stop);

                        ddButton2.setTag(1);

                        mmDialog1.setCancelable(false);

                        if (mmDialog1.isShowing() == false) {
                            stop.stop();
                        }

                        ddButton2.setOnClickListener(new OnClickListener(){
                            @Override
                            public void onClick(View v) {
                                final int status = (Integer) v.getTag();

                                if (status == 1) {
                                    ddButton2.setText("Stop");
                                    countDownTimer = new CountDownTimer(60000, 1000) {

                                        public void onTick(long millisUntilFinished) {
                                            int time = (int) (millisUntilFinished/1000);
                                            timeview.setText(Integer.toString(time));
                                        }
                                        @Override
                                        public void onFinish() {
                                            timeview.setText("60");
                                            ddButton2.setText("Start");
                                            try {
                                                stop.prepare();
                                            } catch (IllegalStateException e) {
                                                e.printStackTrace();
                                            } catch (IOException e) {
                                                e.printStackTrace();
                                            }
                                            stop.start();
                                        }
                                    }.start();
                                    v.setTag(0);

                                } else {
                                    ddButton2.setText("Start");
                                    timeview.setText("60");
                                    countDownTimer.cancel();
                                    v.setTag(1);
                                    stop.stop();
                                }
                            }

                        });

                        ddButton1.setOnClickListener(new OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                mmDialog1.dismiss();
                            }
                        });

                        mmDialog1.show();
                    }
                });
boolean isShowing = mDialog.isShowing();
            stopwatch1.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        final Dialog mmDialog1 = new Dialog(context);
                        mmDialog1.setContentView(R.layout.countdowntimer);
                        mmDialog1.setTitle("Stop-watch");            
                        Button ddButton1 = (Button) mmDialog1.findViewById(R.id.countdown_exit);
                        final Button ddButton2 = (Button) mmDialog1.findViewById(R.id.countdown_start);
                        final TextView timeview = (TextView) mmDialog1.findViewById(R.id.timeview);
                        final MediaPlayer stop = MediaPlayer.create(context, R.raw.stop);

                        ddButton2.setTag(1);

                        mmDialog1.setCancelable(false);

                        if (mmDialog1.isShowing() == false) {
                            stop.stop();
                        }

                        ddButton2.setOnClickListener(new OnClickListener(){
                            @Override
                            public void onClick(View v) {
                                final int status = (Integer) v.getTag();

                                if (status == 1) {
                                    ddButton2.setText("Stop");
                                    countDownTimer = new CountDownTimer(60000, 1000) {

                                        public void onTick(long millisUntilFinished) {
                                            int time = (int) (millisUntilFinished/1000);
                                            timeview.setText(Integer.toString(time));
                                        }
                                        @Override
                                        public void onFinish() {
                                            timeview.setText("60");
                                            ddButton2.setText("Start");
                                            try {
                                                stop.prepare();
                                            } catch (IllegalStateException e) {
                                                e.printStackTrace();
                                            } catch (IOException e) {
                                                e.printStackTrace();
                                            }
                                            stop.start();
                                        }
                                    }.start();
                                    v.setTag(0);

                                } else {
                                    ddButton2.setText("Start");
                                    timeview.setText("60");
                                    countDownTimer.cancel();
                                    v.setTag(1);
                                    stop.stop();
                                }
                            }

                        });

                        ddButton1.setOnClickListener(new OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                mmDialog1.dismiss();
                            }
                        });

                        mmDialog1.show();
                    }
                });