-2

我有一个带有 3 个活动的简单视频播放器。在我的最后一项活动中

player.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getAction() != KeyEvent.ACTION_DOWN)
                return false;

//

            case KeyEvent.KEYCODE_MEDIA_STOP:
                    finish();
                    return true;

当我按下停止时,这正是我想要它做的事情:带我去以前的活动

但..

player.setOnErrorListener(new MediaPlayer.OnErrorListener() {
        @Override
        public boolean onError(MediaPlayer mediaPlayer, int i, int i2) {
            player.setVisibility(View.GONE);
            buffering.setVisibility(View.GONE);
            errorDialog.setVisibility(View.VISIBLE);
            return true;  
        }
    });

errorDialog 有一个小按钮(由我制作),当您按下它时会调用 finish()在其中有完成()的活动中,但仍然做同样的事情。感谢您的时间和支持。

4

2 回答 2

3

你的使命finish()是完成你的活动。您应该使用cancel()来杀死一个对话框。

于 2013-08-04T21:16:20.527 回答
0

对话框不是新活动,它是当前活动的一部分或子活动。一旦按下按钮,您想隐藏/删除屏幕上出现的对话框,因此您应该使用cancel()`` instead. finish()` 将破坏当前活动。

 case KeyEvent.KEYCODE_MEDIA_STOP:
                cancel();
                return true;
于 2013-08-04T21:19:48.477 回答