-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() を呼び出す小さなボタン (私が作成) があり、それを押すと、前のアクティビティ (2 つ目) ではなくメイン アクティビティ (1 つ目) に戻りますが、その理由がわかりません。アクティビティで 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 に答える