如果声明不成真,但它应该

时间:2013-01-23 13:31:00

标签: java android

  

可能重复:
  How do I compare strings in Java?

我不明白为什么sendMessage中的第一个(与其他的相同)if永远不会成真。接收器字符串正是它应该是真的吗?!

当我运行此功能并按发送给Alice 时,我会获得3 Toast:

  1. 发送给Alice(=接收者的价值)
  2. [空白吐司] (= phoneNumber的值)
  3. 你必须选择一条消息(=永远不要这样!)

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

3 个答案:

答案 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应该使用