У меня возникла проблема с простым оператором if, и я не уверен, почему. У меня есть блок edittext и кнопка, когда пользователь вводит значение в edittext, а затем нажимает кнопку, то, что было введено в поле, преобразуется в строку и сохраняется в переменной, эта переменная отображается в тосте , Теперь это работает отлично, но я бы хотел, чтобы он отображал только, если какое-то значение вводится в поле редактирования, но когда я вставляю оператор if для проверки этого, он, по-видимому, полностью рассеивает оператор if и ничего не делает. Он не вызывает никаких ошибок, но останавливает отображение любого тоста, даже если вводится правильная строка. Я уверен, что это что-то простое, но я не могу это понять. Было бы здорово, если бы кто-нибудь мог понять, почему он это делает.
код ниже:
Рабочий код, когда если заявление закомментирована:
Простая инструкция 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();
// }
}
});
если если заявление вносится в то ничего не будет делать:
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();
}
}
});
_controlNum_ - это строка, ее следует всегда сравнивать с помощью методов 'equals()' или 'equalsIgnoreCase()'. –
попробуйте 'Global.controlNum.equals (" 1 ")' вместо – rocketboy
использовать .equals() или .equalIgonreCase(), когда u сравнивает две строки. –