android.view.WindowManager$BadTokenException: Unable to add window -- token null

今天在创建一个窗口的时候老是报错,很少郁闷。
引起错误的代码如下:

new AlertDialog.Builder(AppsInforAdapter.this.mContext) //出错的位置
	.setTitle("提示")
	.setMessage("确认删除该应用吗?")
	.setCancelable(true)
	.setNegativeButton("取消", new  DialogInterface.OnClickListener(){
		@Override
		public void onClick(DialogInterface dialog, int which) {
			dialog.cancel();
		}
		})
	.setPositiveButton("删除", new  DialogInterface.OnClickListener(){
		@Override
		public void onClick(DialogInterface dialog, int which) {
			uninstallPkg(vh.info.activityInfo.packageName);
		}
	})
	.show();

 刚开始看起来是没有错误的。但是log提示这个有错误,后来尝试了一下才知道是AppsInforAdapter.this.mContext的问题,但这个尝试是那里来的呢。
构造函数

public AppsInforAdapter(Context applicationContext, List<ResolveInfo> infos) {
        this.mContext = applicationContext;
        this.mInfos = infos;
}

 

@Override
protected void onCreate(Bundle savedInstanceState) {
	// TODO Auto-generated method stub
	super.onCreate(savedInstanceState);
	setContentView(R.layout.home);
	this.loadAPPInfo();
	
	gv_apps = (GridView) findViewById(R.id.apps); 
	gv_apps.setAdapter(new AppsInforAdapter(this.getApplicationContext(),this.infos));
	//就是这里参数有问题
}

正确的代码如下:

@Override
protected void onCreate(Bundle savedInstanceState) {
	// TODO Auto-generated method stub
	super.onCreate(savedInstanceState);
	setContentView(R.layout.home);
	this.loadAPPInfo();
	
	gv_apps = (GridView) findViewById(R.id.apps); 
	gv_apps.setAdapter(new AppsInforAdapter(this,this.infos)); //参数改变了
}

所以不能一味的使用getApplicationContext()方法,要用activity。因为窗口的弹出要有activity。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值