码迷,mamicode.com
首页 > 移动开发 > 详细

关于ProgressDialog.show抛出android.view.WindowManager$BadTokenException: Unable to add window

时间:2017-06-08 16:40:14      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:word   添加   microsoft   tom   style   dia   为知笔记   tle   sdi   

        下午摆弄ProgressDialog,进入就抛错:android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application,让我百思不得其解。我这使用这种方法实现的进度对话框:proDialog = ProgressDialog.show(getApplicationContext(), "sadfs", "dddddd",true);
查证得知

导致异常的原因就是这个getApplicationContext(),虽然这里的参数也是获得一个context,但不能使用getApplicationContext()获得的Context。必须使用Activity,因为只有一个Activity才能添加一个窗体


解决方法:将参数中的getApplicationContext() 改为xxActivity.this就ok了


ProgressDialog对象是依赖于一个View的,而View是和一个Activity对应的。 于是,这里涉及到一个生命周期的问题,this.getApplicationContext()取的是这个应 用程序的Context,Activity.this取的是这个Activity的Context,这两者的生命周期是不同 的,前者的生命周期是整个应用,后者的生命周期只是它所在的Activity。而ProgressDialog应
该是属于一个Activity的,在Activity销毁的时候它也就销毁了,不会再存在;但是,如果传 入this.getApplicationContext(),就表示它的生命周期是整个应用程序,这显然超过了它 的生命周期了。 所以,在这里我们只能使用Activity的this。






关于ProgressDialog.show抛出android.view.WindowManager$BadTokenException: Unable to add window

标签:word   添加   microsoft   tom   style   dia   为知笔记   tle   sdi   

原文地址:http://www.cnblogs.com/jeffen/p/6963307.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!