该按钮在mainUI线程中定义 以下是导致问题的代码部分 -
button.setOnClickListener(new OnClickListener() {
public void onClick(View v){
new Thread(new Runnable() {
public void run() {
try {
OutputStream outToServer = client.getOutputStream();
DataOutputStream out = new DataOutputStream(outToServer);
out.writeUTF("Hello from " + client.getLocalSocketAddress());
final String msg = edi.getText().toString();
out.writeUTF("Client: " + msg);
runOnUiThread(new Runnable() {
@Override
public void run() {
tex.append(msg);
if (msg == "quit") {
button.setClickable(false);
tex.append("quitbutton");
}
tex.append("Client: " + msg + "\n");
edi.setText("");
}
});
} catch (Exception e) {
e.printStackTrace();
}
}}).start();
}
});
这里的其余代码工作得很好。当我发送“quit”作为字符串时,msg变量正确地使用它。问题似乎根本没有进入if块,因为如果它确实存在,它应该在textview中显示“quibutton”文本,而不是。
感谢任何帮助,谢谢:)
编辑 - 我没有意识到我没有以正确的方式比较字符串,而不是我不知道如何。它可能与我头脑中的C ++运算符重载函数混淆了,我想用==直接比较字符串。
答案 0 :(得分:0)
更改此
if (msg == "quit") {
button.setClickable(false);
tex.append("quitbutton");
}
到这个
if (msg.equals("quit")) {
button.setEnabled(false);
tex.append("quitbutton");
}