android.view.WindowManager$BadTokenException: Unable to add window(转)

发布时间:2016-12-6 10:54:05 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"android.view.WindowManager$BadTokenException: Unable to add window(转)",主要涉及到android.view.WindowManager$BadTokenException: Unable to add window(转)方面的内容,对于android.view.WindowManager$BadTokenException: Unable to add window(转)感兴趣的同学可以参考一下。

遇到一个问题,android.view.WindowManager$BadTokenException: Unable to add window 报了这个错。 private void showCustomDialog() {   // TODO Auto-generated method stub   AlertDialog.Builder builder;   AlertDialog dialog;      LayoutInflater inflator = (LayoutInflater) LayoutInflatorActivity.this.getSystemService(LAYOUT_INFLATER_SERVICE);   View view = inflator.inflate(R.layout.dialoglayout, null);   TextView text = (TextView) view.findViewById(R.id.textview);   ImageButton imageButton = (ImageButton) view.findViewById(R.id.imageButton);   builder = new AlertDialog.Builder(this);   builder.setView(view);   dialog = builder.create();   dialog.show();    } 在这句上报错了。因为本来我的写法是: builder = new AlertDialog.Builder(this.getApplicationContext()); 因为看了API 是 new AlertDialog.Builder(Context context);想着也没什么语法错误吧。 结果网上搜了一下,大概解释了一下获取上下文this.getApplicationContext()); 和 this的区别: 这里的this指的当然就是Acitivity.this , 指的是这个Acitivity的上下文,而this.getApplicationContext()指的则是整个应用的上下文。 对于AlertDialog来说,是需要依赖一个View,而View是对应于Activity的。 那么为什么会报错呢,这里涉及到一个生命周期的问题了。 对于一个应用Context来说,它的生命周期是整个应用程序的生命周期,而对于Activity来说,当它销毁之后它的生命周期就结束了。 AlertDialog是属于Acitivity的,当Activity销毁的时候它也必须销毁,所以这里我们指定是Activity的Context。

上一篇:数字图像处理的基本步骤
下一篇:NYOJ 55 懒省事的小明

相关文章

相关评论