2012-03-27 62 views
0

我最初使用处理程序来更新从互联网接收的数据的UI。我现在想要在alertdialog中显示这些数据,而不是在UI屏幕上。该程序通过按下按钮来工作,获取信息并将其显示在屏幕上。这是通过为处理程序调用必要的消息来完成的。我管理的吐司消息做,我认为alertdialog将遵循同样的逻辑,但我得到的错误:在我的活动中启动来自处理程序的AlertDialog

RunTime Error: Unable to add Window -- token null is not for an application 

这里是我的处理程序消息,该错误显然是造成代码(84号线这是.show()方法行):

Handler handler = new Handler() 
{ 
    @Override 
    public void handleMessage(Message msg) 
    { 
     Context context = getApplicationContext(); 

     switch(msg.what) 
     { 
      case DISPLAY_TOAST: 
       Toast t = Toast.makeText(context,"Toast Test",Toast.LENGTH_SHORT); 
       t.show();  
      break; 


      case UPDATE_UI: 
       htmlData.setText(feedback);   
      break; 


      case DISPLAY_ALERT_DIALOG: 

       passTime = new AlertDialog.Builder(context); 
       passTime.setTitle(alertDialogTitleStrg); 
       passTime.setMessage(alertDialogMsgStrg); 
       passTime.show(); 

      break; 
     } 

    } 
}; 

回答

1

你的上下文对象是错误的,你可以做最简单的方法是:

passTime = new AlertDialog.Builder(YourActivity.this); 

问候

+1

感谢它在那里工作得很好,虽然我本来也是这样,但它仍然失败......我一定要老去 – Katana24 2012-03-27 19:41:04

+0

有时在开发者的生活中有些奇怪的事情发生; – 2012-03-27 20:12:20

+0

感谢那令人耳目一新的时刻的家伙! :d – longilong 2015-07-14 15:15:23

1

使用应用程序上下文不能表现出AlertDialog,你必须得到一个参考到你的活动情境和使用,在您的AlertDialog构造。

+0

干杯的答案 - 你的意思基本上就是以前的海报指的是吧? – Katana24 2012-03-27 19:41:37

+0

@ Katana24是的,您可以通过'ActivityName.this'获取活动上下文。对话框以某种方式与活动相关联,并且您应该始终在创建活动时使用活动上下文。 – Luksprog 2012-03-27 19:46:01

相关问题