我遇到一个简单的if语句问题,我不太清楚为什么。我有一个edittext框和一个按钮,当用户在edittext中输入一个值然后按下按钮时,输入到框中的任何内容都被转换为字符串并存储在一个变量中,然后这个变量显示在一个toast中。现在这个工作完全正常,但我希望它只显示如果某个值输入到编辑框中,但是当我输入if语句来验证它时,它似乎完全不理会if语句而什么都不做。它不会导致任何错误,但即使输入了正确的字符串,它也会停止显示任何Toast。我确信这很简单,但我似乎无法解决这个问题。如果有人能解决它为什么这样做会很棒。
以下代码:
当if语句被注释掉时的工作代码:
saveBtn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Global.controlNum = inputTxt1.getText().toString();
// if((Global.controlNum == "1")||(Global.controlNum == "2" )){
Toast toast= Toast.makeText(SettingsScreen.this,"hello " + Global.controlNum, Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, -100);
toast.show();
// }
}
});
如果if语句被引入则它将什么都不做:
saveBtn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Global.controlNum = inputTxt1.getText().toString();
if((Global.controlNum == "1")||(Global.controlNum == "2" )){
Toast toast= Toast.makeText(SettingsScreen.this,"hello " + Global.controlNum, Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, -100);
toast.show();
}
}
});
答案 0 :(得分:3)
了解How do I compare strings in Java?
所以简单地改变
if((Global.controlNum == "1")||(Global.controlNum == "2" ))
使用
if(("1".equals(Global.controlNum))||("2".equals(Global.controlNum) ))
答案 1 :(得分:0)
您应该使用equlas()
来比较String
Global.controlNum.equlas("1")
答案 2 :(得分:0)
尝试替换
if((Global.controlNum == "1")||(Global.controlNum == "2" ))
带
if((Global.controlNum.equalsIgnoreCase("1"))||(Global.controlNum.equalsIgnoreCase("2") ))
答案 3 :(得分:0)
使用Global.controlNum.equals("1")
如果您想比较Java中的字符串(Android),请始终使用方法equals(String)
或equalsIgnoreCase(String)
答案 4 :(得分:0)
你应该改为:
if((Global.controlNum == "1")||(Global.controlNum == "2" ))
到
if((Global.controlNum.equals("1"))||(Global.controlNum.equals("2") ))