2012-03-27 46 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

相關問題