android无法在处理程序中显示警报对话框

android无法在处理程序中显示警报对话框,android,multithreading,Android,Multithreading,我试图在处理程序中显示警报对话框,但无法显示警报。你能帮我看看臭虫在哪里吗 Handler myHandler = new Handler() { public void handleMessage(Message msg) { myDialog.show(); super.handleMessage(msg); } }; class myThread

我试图在处理程序中显示警报对话框,但无法显示警报。你能帮我看看臭虫在哪里吗

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将触发该对话框。逻辑有什么问题?谢谢。

像这样更新您的处理程序

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();
       }
   } 
在你的线程中更新如下

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();
       }
   }