2012-11-29 58 views
0

我试图在视频完成后得到一个提醒对话框。视频播放完毕后的对话框(OnCompletionListener +对话框)

这是我到目前为止的代码:

public class VideoActivity extends Activity{ 
private Context mContext; 

     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.videoview); 
      this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
      VideoView vv = (VideoView) findViewById(R.id.videoview); 
      MediaController mc = new MediaController(this); 

    public OnCompletionListener onCompletion(final String key){ 
      OnCompletionListener ocl = new OnCompletionListener(){ 

    public void onCompletion(MediaPlayer mp) {  
    AlertDialog.Builder dialog = new AlertDialog.Builder(mContext); //Lag en dialog utifra kontekst 
    dialog.setTitle("Hello"); //Hent ut tittelen til overlayItem 
    dialog.setMessage("hello"); //Hent ut teksten til overlayItem 
    dialog.setCancelable(false); 

    dialog.setPositiveButton("Something", new OnClickListener() {   
     public void onClick(DialogInterface dialog, int id) { 
      Intent intent = new Intent(mContext, VideoMenu.class);      
      mContext.startActivity(intent); 
     } 
    }); 

    dialog.show(); //Vis dialogen 
} 

是否有另一种方式做到这一点?我一直在疯狂搜索,但找不到任何帮助。有了这段代码,我得到了一个空指针豁免。

谢谢! :)

11-29 23:12:54.215: E/AndroidRuntime(8445): FATAL EXCEPTION: main 
11-29 23:12:54.215: E/AndroidRuntime(8445): java.lang.NullPointerException 
11-29 23:12:54.215: E/AndroidRuntime(8445):  at android.app.AlertDialog.resolveDialogTheme(AlertDialog.java:142) 
11-29 23:12:54.215: E/AndroidRuntime(8445):  at android.app.AlertDialog$Builder.<init>(AlertDialog.java:359) 
11-29 23:12:54.215: E/AndroidRuntime(8445):  at com.example.norskattraksjon.VideoActivity$1.onCompletion(VideoActivity.java:97) 
11-29 23:12:54.215: E/AndroidRuntime(8445):  at android.widget.VideoView$3.onCompletion(VideoView.java:345) 
11-29 23:12:54.215: E/AndroidRuntime(8445):  at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:1773) 
11-29 23:12:54.215: E/AndroidRuntime(8445):  at android.os.Handler.dispatchMessage(Handler.java:99) 
11-29 23:12:54.215: E/AndroidRuntime(8445):  at android.os.Looper.loop(Looper.java:137) 
11-29 23:12:54.215: E/AndroidRuntime(8445):  at android.app.ActivityThread.main(ActivityThread.java:4517) 
11-29 23:12:54.215: E/AndroidRuntime(8445):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-29 23:12:54.215: E/AndroidRuntime(8445):  at java.lang.reflect.Method.invoke(Method.java:511) 
11-29 23:12:54.215: E/AndroidRuntime(8445):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993) 
11-29 23:12:54.215: E/AndroidRuntime(8445):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760) 
11-29 23:12:54.215: E/AndroidRuntime(8445):  at dalvik.system.NativeStart.main(Native Method) 
+0

安置自己的logcat的错误,所以我们可以看到发生了什么。你初始化了'mContext'吗? – Sam

+0

我已初始化mContext。 – DeSoto

+0

问题与您的主题有关...首先,您的目标API或正在运行此设备的设备的API是什么? – Sam

回答

0

您已经定义mContext,但你仍然需要初始化它:

private Context mContext; // Defined 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mContext = this; // Initialized 
    ... 
+0

就是这样!比你这么多的帮助! – DeSoto

+0

没问题!请点击复选标记以接受此答案作为解决方案。 – Sam