2012-09-13 28 views
4

我正在開發一個Android遊戲。在這個遊戲中,有列車運行的軌道。這是正在運行的線程。我想在出現衝突時顯示警告對話框。當我應用警告對話框顯示錯誤時,無法在線程內創建處理程序,該處理程序未調用looper.prepare()如何在正在運行的線程中顯示警報對話框?

回答

12

你必須需要創建AlertDialog UI線程中否則它不會有任何效果。如果你在不同的線程使用MessageHandler或可以使用runOnUiThread(使用可運行)來創建你的對話框裏面。

+0

你能告訴我任何例子。 – user1602798

1

你必須讓你的UI線程對話框如下圖所示

runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
       // Your dialog code. 
       } 
      }); 
12

這將幫助你:

runOnUiThread(new Runnable() { 
    @Override 
    public void run() { 
     // Your dialog code. 
    } 
}); 
+0

當我添加runOnUiThread在我的代碼它顯示錯誤: - 方法runOnUiThread(新的Runnable(){})未定義類型MainGamePanel – user1602798

4

您可以使用處理程序來完成這項工作。

Handler mHandler = new Handler(Looper.getMainLooper()); 
mHandler.post(new Runnable() { 
    @Override 
    public void run() { 
     // Your UI updates here 
    } 
}); 
+0

它顯示空指針異常在mHandler.post行。 – user1602798

+0

它應該是mHandler。編輯它。謝謝... :) – prakash

+0

你需要初始化變量Handler mHandler = new Handler(); – Javier

6

您可以在Activity類中創建一個處理程序,並且可以對該處理程序對象調用sendMessage。編寫代碼在處理程序的的handleMessage方法來顯示警報,例如:

活動類

Handler mHandler = new Handler() 
{ 
    public void handleMessage(Message msg) 
    { 
     //Display Alert 
    } 
}; 

//Thread 

Thread thread= new Thread() 
{ 
    public void run() 
    { 
     //Logic 
     MHandler.sendEmptyMessage(0); 
    } 
} 
+0

謝謝你:)。 – Arlind