我在自定义对话框中有一个VideoView。第一次显示对话框时,视频播放正确,但如果对话框被解除然后再次加载,则视频无法播放,对话框只是黑屏。
以下是我用来创建对话框的代码:
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;
}
我做错了什么?
感谢您的时间,并抱歉我的英语不好。
答案 0 :(得分:0)
创建对话框时,只调用onCreateDialog(int id)方法一次。因此,一旦创建了对话框并且当您关闭对话框时,现在调用方法onCreateDialog(int id)不再被调用,这就是为什么您无法再次查看视频的原因。根据您的代码,播放视频的逻辑仅适用于创建对话框。
您可以使用onPrepareDialog(int id),每次启动对话框时都会调用它。
注意:: 您需要同时使用onCreateDialog(int id)和onPrepareDialog(int id)。