2013-08-21 2 views
-2

У меня возникла проблема с простым оператором 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(); 
      } 

     } 
    }); 
+0

_controlNum_ - это строка, ее следует всегда сравнивать с помощью методов 'equals()' или 'equalsIgnoreCase()'. –

+1

попробуйте 'Global.controlNum.equals (" 1 ")' вместо – rocketboy

+0

использовать .equals() или .equalIgonreCase(), когда u сравнивает две строки. –

ответ

0

вы должны изменить его с помощью:

if((Global.controlNum == "1")||(Global.controlNum == "2")) 

до

if((Global.controlNum.equals("1"))||(Global.controlNum.equals("2"))) 
+0

@AndroidLearner Я действительно сомневаюсь в этом. Если метод 'toString', который его создает, может возвращать значение null, что кажется маловероятным, тогда это нормально. – resueman

3

Читать около How do I compare strings in Java?


Так просто изменить

if((Global.controlNum == "1")||(Global.controlNum == "2")) 

С

if(("1".equals(Global.controlNum))||("2".equals(Global.controlNum))) 
0

Вы должны использовать equlas() для сравнения String

Global.controlNum.equlas("1") 
0

Попробуйте заменить

if((Global.controlNum == "1")||(Global.controlNum == "2")) 

с

if((Global.controlNum.equalsIgnoreCase("1"))||(Global.controlNum.equalsIgnoreCase("2"))) 
0

Использование Global.controlNum.equals("1")

Если вы хотите сравнить строки в Java (Android) всегда используется метод equals(String) или equalsIgnoreCase(String)