我有一个简单的视频播放器,有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()的新方法,但仍然做同样的事情。 谢谢你的时间和支持。
答案 0 :(得分:3)
您致电finish()
即将完成您的活动。您应该使用cancel()
来终止对话框。
答案 1 :(得分:0)
Dialog不是新活动,它是当前活动的一部分或子项。按下按钮后,您想要隐藏/删除屏幕上出现的对话框,因此您应该使用cancel()`` instead.
finish()`将破坏当前活动。
case KeyEvent.KEYCODE_MEDIA_STOP:
cancel();
return true;