2012-06-25 73 views
0

我在自定义对话框中有一个VideoView。首次显示对话框时,视频播放正确,但如果对话框被解散并再次加载,则视频不会播放,对话框只是黑屏。Android 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

创建对话框时,方法onCreateDialog(int id)仅被调用一次。所以一旦你创建了对话框并且当你关闭对话框时,现在调用onCreateDialog(int id)方法不会被再次调用,这就是为什么你不能第二次查看视频。根据您的代码,播放视频的逻辑仅适用于创建对话框。

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

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

+0

谢谢,我刚加入removeDialog(VIDEO_DIALOG);到onDismiss监听器,现在它工作正常! – TheWalkingCube