爲什麼在這段代碼中,不工作? 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);
}
}
翻譯的英文註釋。字符串內容需要等於進行比較。使用==會比較字符串引用 – Blackbelt
,因爲您無法從非UI線程訪問UI。閱讀有關AsyncTask,也許這一個 - http://stackoverflow.com/help/how-to-ask – mihail
同意@mihail。最好使用AsyncTask,這很舒服。 –