2013-10-29 156 views
0

我試圖在處理程序中顯示警告對話框,但我無法顯示警報。你能幫我看看錯誤在哪裏嗎?android無法在處理程序中顯示警告對話框

Handler myHandler = new Handler() { 
    public void handleMessage(Message msg) { 
       myDialog.show();      
       super.handleMessage(msg); 
    } 
    }; 

class myThread implements Runnable { 
    public void run() { 
     try { 


      myHandler.sendMessage(message); 


     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

}

在的onCreate:

myDialog= new AlertDialog.Builder(this).create(); 
    myDialog.setTitle("hi"); 
    myDialog.setMessage("thanks"); 
    myDialog.setButton("Next...",new DialogInterface.OnClickListener() 
    { 

     @Override 
     public void onClick(DialogInterface dialog, int which) 
     { 

     } 
    }); 

    new Thread(new myThread()).start(); 
.... 

我定義將myHandler和MyThread的。然後在onCreate中,我定義了一個對話框。然後調用mythread運行。我想這個mythread會發送一個消息給myHandler。然後,Myhandler將觸發對話框。邏輯有什麼問題?謝謝。

回答

1

更新您處理程序這樣

Handler myHandler = new Handler() { 
    public void handleMessage(Message msg) { 
       super.handleMessage(msg); 

       String aResponse = msg.getData().getString("message"); 
        if ((null != aResponse)) { 
          //Show dialog 
          myDialog.show(); 
        } 
       else{ 
         // ALERT MESSAGE 
         Toast.makeText(getBaseContext(), 
             "No message from Thread", 
             Toast.LENGTH_SHORT).show(); 
         }  

    } 
    };    

,並在這樣

class myThread implements Runnable { 
    public void run() { 
     try { 

          Message msgObj = myHandler.obtainMessage(); 
          Bundle b = new Bundle(); 
          b.putString("message", msg); 
          msgObj.setData(b); 
          myHandler.sendMessage(msgObj); 


     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
你的線程更新