finish()带我去主要活动

时间:2013-08-04 21:13:39

标签: android activity-finish

我有一个简单的视频播放器,有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()将我带回主要活动(第一个)而不是前一个(第二个)并且我不明白为什么。我试过装箱在活动中使用finish()的新方法,但仍然做同样的事情。 谢谢你的时间和支持。

2 个答案:

答案 0 :(得分:3)

您致电finish()即将完成您的活动。您应该使用cancel()来终止对话框。

答案 1 :(得分:0)

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

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