-1

为什么在这段代码中,不起作用?绕过 if 语句的控制

@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);  
 } 
 }   
4

2 回答 2

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

在 Java==中 for Strings 对象比较字符串的引用而不是他们的内容

于 2013-07-02T07:59:35.187 回答
0

final String CONSTANT_NAME在代码之上创建以使其更具代表性是一种很好的做法。另外,请阅读本教程以了解一些编程模式:

http://thinkandroid.wordpress.com/2010/03/27/incorporating-socket-programming-into-your-applications/

于 2013-07-02T08:04:23.897 回答