调用如下代码创建一个对话框时:
//使用对话框显示用户单击的图片
new AlertDialog.Builder(getApplicationContext())
.setView(viewDialog).setPositiveButton("OK", null)
.show();
报错信息如下:
606 7415-7415/com.example.raid.mediaprovidertest E/InputEventReceiver﹕ Exception dispatching input event.
09-28 07:51:47.606 7415-7415/com.example.raid.mediaprovidertest E/MessageQueue-JNI﹕ Exception in MessageQueue callback: handleReceiveCallback
09-28 07:51:47.607 7415-7415/com.example.raid.mediaprovidertest E/MessageQueue-JNI﹕ android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
at android.view.ViewRootImpl.setView(ViewRootImpl.java:566)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:282)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85)
错误的原因:
导致报这个错是在于new AlertDialog.Builder(mcontext),虽然这里的参数是AlertDialog.Builder(Context context)但我们不能使用getApplicationContext()获得的Context,而必须使用Activity,因为只有一个Activity才能添加一个窗体。
解决方法:
把
getApplicationContext()
改成
MainActivity.this
就可以了~