我不明白为什么sendMessage中的第一个(与其他的相同)if
永远不会成真。接收器字符串正是它应该是真的吗?!
当我运行此功能并按发送给Alice 时,我会获得3 Toast:
你必须选择一条消息(=永远不要这样!)
public void onSend(View src){
Button b = (Button)src;
sendMessage(b.getText().toString());
}
public void sendMessage(String reciever){
String phoneNumber = "";
Toast.makeText(this, reciever, Toast.LENGTH_LONG).show();
if (reciever == "Send to Alice"){
phoneNumber = "01230340645";
Toast.makeText(this, "hej", Toast.LENGTH_LONG).show();
}
else if (reciever == "Send to Bob"){
phoneNumber = "020312039";
}
else if (reciever == "Send to John"){
phoneNumber = "0102308013";
}
Toast.makeText(this, phoneNumber, Toast.LENGTH_LONG).show();
if (_message == ""){
Toast.makeText(this, "You have to choose a message!", Toast.LENGTH_LONG).show();
} else {
Intent sms = new Intent(Intent.ACTION_SENDTO, Uri.parse("sms:" + phoneNumber));
sms.putExtra("sms_body", _message);
startActivity(sms);
_message = "";
}
}
答案 0 :(得分:11)
不要使用==
来比较Java中的字符串。使用equals方法。
if (reciever.equals("Send to Alice"))...
==
运算符比较引用是否相等,而不是引用指向的对象。
答案 1 :(得分:5)
试试这个......
发件人:
if (reciever == "Send to Alice")
要:
if (receiver.equals("Send to Alice"))
答案 2 :(得分:1)
if (receiver.equals("Send to Alice"))
如果要以区分大小写和
检查“发送给Alice”if (receiver.equalsIgnoreCase("Send to Alice"))
如果要检查“发送给Alice”而没有区分大小写并且
因为==
只检查整数(类似),而字符.equals
应该使用