2013-07-02 89 views
-1

爲什麼在這段代碼中,不工作? if語句的控制在Java中==被旁路消息來自後臺線程android

@Override 
public void run() { 

    try {   

     Log.d("UDP", "S: Connecting..."); 

     // CREO ED INIZIALIZZO IL SOCKET UDP 
     DatagramSocket socket = new DatagramSocket(null); 
     socket.setReuseAddress(true); 
     socket.bind(new InetSocketAddress(SERVERIP, SERVERPORT)); 
     //DEFINISCO LA GRANDEZZA DEL BUFFER IN RICEZIONE 

     byte[] buf = new byte[64]; 
    //CREO ED INIZIALIZZO IL PACCHETTO 

     DatagramPacket packet = new DatagramPacket(buf, buf.length); 
     Log.d("UDP", "S: Ricezione..."); 
     IL SERVER SI METTE IN "RICEZIONE" DEL PACCHETTO 

     socket.receive(packet); 

     Log.d("UDP", "S: Ricevuto: " + new String(buf, 0, packet.getLength()) + "'"); 
     Log.d("UDP", "S: Ok."); 

     String risultato= new String(buf, 0, packet.getLength()); 
     System.err.println(risultato); 



     if(risultato=="COMANDO RICEVUTO CORRETTAMENTE"){ 
      // Showing Alert Message 
      alertDialog.show(); 
      System.err.println("ALERT DIALOG"); 
     } 


} catch (Exception e) { 
     Log.e("UDP", "S: Error", e); 
} 
} 
+0

翻譯的英文註釋。字符串內容需要等於進行比較。使用==會比較字符串引用 – Blackbelt

+0

,因爲您無法從非UI線程訪問UI。閱讀有關AsyncTask,也許這一個 - http://stackoverflow.com/help/how-to-ask – mihail

+0

同意@mihail。最好使用AsyncTask,這很舒服。 –

回答

0

變化

if(risultato=="COMANDO RICEVUTO CORRETTAMENTE"){ 
      // Showing Alert Message 
      alertDialog.show(); 
      System.err.println("ALERT DIALOG"); 
} 

if(risultato.equalsIgnoreCase("COMANDO RICEVUTO CORRETTAMENTE")){ 
      // Showing Alert Message 
      alertDialog.show(); 
      System.err.println("ALERT DIALOG"); 
} 

絃樂對象比較字符串的引用而不是他們的內容