AlertDialog 获取上下文的问题

  Log Error   android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an app


   今天给删除收货地址写AlertDialog的时候 ,无论怎么样 都是 不能Create ,我是把AlertDialog 写在Adapter里面了 而且上下文mContext已经传过来了 ,后来百度了。


  解决办法  在Activity new Adapter 传上下文的时候用 Activity.this 作为上下文 不要用 getApplication()  作为上下文 这样就可以了



  如果你把AlerDialog写在Activity上 也要用 Activity.this 作为上下文。。。。。



AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle("提示信息");
builder.setMessage("您确定取删除收货地址吗?");
builder.setIcon(R.drawable.ic_launcher);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        delAddress(mDatas.get(position).getAddressId());
    }
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
    }
});
Dialog alertDialog = builder.create();
alertDialog.show();



http://blog.csdn.net/yimo29/article/details/6004782

在Activity中newSpinner是我把mContext传入,但是出了Android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application这个错误,参考了达人的文章终于搞定。

 

  1. private Context mcontext;  
  2.     @Override  
  3.     protected void onCreate(Bundle savedInstanceState) {mcontext = getApplicationContext();  
  4.         System.out.println("mcontext=" + mcontext);  
  5.     }  

 

  1. new AlertDialog.Builder(mcontext)  
  2.             .setIcon(android.R.drawable.ic_dialog_alert)  
  3.             .setTitle("Warnning")  
  4.             .setMessage(  
  5.                     "You forget to write the message. Do you want to fill out it ??")  
  6.             .setPositiveButton("Yes", positiveListener).setNegativeButton(  
  7.                     "No", negativeListener).create().show();  

 

导致报这个错是在于new AlertDialog.Builder(mcontext),虽然这里的参数是AlertDialog.Builder(Context context)但我们不能使用getApplicationContext()获得的Context,而必须使用Activity,因为只有一个Activity才能添加一个窗体。 

 

解决方法:将new AlertDialog.Builder(Context context)中的参数用Activity.this(Activity是你的Activity的名称)来填充就可以正确的创建一个Dialog了。

 

[java]  view plain  copy
  1. new AlertDialog.Builder(MyActivity.this)  
  2.                 .setIcon(android.R.drawable.ic_dialog_alert)  
  3.                 .setTitle("Warnning")  
  4.                 .setMessage(  
  5.                         "You forget to write the message. Do you want to fill out it ??")  
  6.                 .setPositiveButton("Yes", positiveListener).setNegativeButton(  
  7.                         "No", negativeListener).create().show();  


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值