android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
在当前Activity弹出一个对话框,获得AlertDialog.Builder对象时,使用getApplicationContext()作为Context构造实参就会出现此错!
AlertDialog.Builder builder = new Builder(getApplicationContext());
解决办法就是使用当前Acivity作为Context构造实参.
AlertDialog.Builder builder = new Builder(CurrentActivity.this);
这是为什么了?当Dialog弹出时遮挡住当前的Activity,当前Activity的onPause()方法不会被调用,由此可见弹出的Dialog是当前的 Activity 的一部分,所以在创建AlertDialog.Builder时,应该使用当前Activity的上下文环境,如果使用当前应用的上下文环境 getApplicationContext,这个Dialog就不知道挂在哪一个Activity下,所以就报错了!
Dialog不能独立存在吗?