Видео не будет воспроизводиться при втором вызове

#android #video #dialog

#Android #Видео #диалоговое окно

Вопрос:

С помощью следующего кода в onCreateDialog я открываю Dialog , который показывает видео.

 dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.video_dialog);

final VideoView videoView = (VideoView) dialog.findViewById(R.id.videoView);

videoView.setVideoURI(Uri.parse("android.resource://"   getPackageName()   "/"   R.raw.test2));
videoView.setZOrderOnTop(true);
videoView.start();
  

Это отлично работает при первом вызове. но если я отменю вызов, Dialog нажав кнопку «Назад», и снова открою его Dialog , видео не запустится. Откроется диалоговое окно, но я вижу только черный фон Dialog .

Я попытался установить OnCancelListener , чтобы убедиться, что видео остановлено и диалоговое окно больше не используется, выполнив следующее

 dialog.setOnCancelListener(new OnCancelListener() {
    @Override
    public void onCancel(DialogInterface dialog) {
    videoView.stopPlayback();
    //videoView.suspend();
    dialog = null;
}
  

Ни stopPlayback() ни suspend() не сработали.

Кто-нибудь может сказать, что может вызвать эту проблему?

Ответ №1:

Вы должны переместить свой код в onpreparredialog.При первом запуске создается диалоговое окно, поэтому вызывается onCreateDialog, но во второй раз диалоговое окно уже создано и вызывается только onpreparredialog. Еще немного информации о диалоговых окнах

Комментарии:

1. Не знаю, как я это пропустил, кажется довольно очевидным 😉 Хотя спасибо!