0

我在自定义对话框中有一个 VideoView。第一次显示 Dialog 时,视频可以正确播放,但如果 Dialog 被关闭然后再次加载,则视频不会播放,并且对话框只是黑屏。

这是我用来创建 Dialog 的代码:

Dialog d;

protected Dialog onCreateDialog(int id) {
    switch(id) {
    case DIALOG_VIDEO:
        AlertDialog.Builder builder;

        LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
        View layout = inflater.inflate(R.layout.video,null);

        final VideoView vv = (VideoView)layout.findViewById(R.id.vv);
        vv.setMediaController(new MediaController(this));

        vv.setVideoURI(path);

        vv.setZOrderOnTop(true);
        vv.requestFocus();
        vv.start();

        builder = new AlertDialog.Builder(this);
        builder.setView(layout);
        d = builder.create();
        d.setOnDismissListener(new DialogInterface.OnDismissListener() {
            public void onDismiss(DialogInterface dialog) {
                VideoView vv = (VideoView)d.findViewById(R.id.vv);

                vv.stopPlayback();
                vv.clearFocus();
            }
        });
        break;
    default:
        d = null;
    }

    return d;
}

我究竟做错了什么 ?

感谢您的宝贵时间,并为我糟糕的英语感到抱歉。

4

1 回答 1

0

创建对话框时只调用一次 onCreateDialog(int id) 方法。因此,一旦您创建了对话框并且当您关闭对话框时,现在调用 onCreateDialog(int id) 方法不再调用,这就是您无法第二次查看视频的原因。根据您的代码,播放视频的逻辑仅用于创建对话框。

您可以使用 onPrepareDialog(int id) ,每次启动对话框时都会调用它。

注意::您需要同时使用 onCreateDialog(int id) 和 onPrepareDialog(int id)。

于 2012-06-25T12:17:13.197 回答