2015-07-25 3 views
-2

Сценарий: когда фокус потерян из EditText, я проверяю, содержит ли он значение null (в первом блоке if).
Если это так, то я покажу тост.
В блоке else-if я проверяю, не содержит ли EditText буквы.
Затем я покажу тост, но когда я запустил приложение, тост отображается даже на правильном входе.
I.e .: Если я ввешу какую-либо букву, Toast не должен отображаться, она должна отображаться только при вводе нулевого или цифрового символа.if-else блок не работает должным образом в android

Вот код

et1.setOnFocusChangeListener(new View.OnFocusChangeListener() { 

     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 
      // TODO Auto-generated method stub 
      if(!hasFocus) 
      { 
       a = et1.getText().toString(); 
       if (a.equals("")) 
       { 
        Toast.makeText(getApplicationContext(), "Your entry is incorrect!!", Toast.LENGTH_LONG).show(); 
       } 
       else if (!a.contains("[a-z]")||!a.contains("[A-Z]")) { 
        Toast.makeText(getApplicationContext(), "Your entry is incorrect!!", Toast.LENGTH_LONG).show(); 

       } 
       else 
       { 
       } 

Пожалуйста, помогите

+1

возможно дубликат [? Как сравнить строки в Java] (http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – njzk2

+1

Не понимаю, разве вы не читали документацию для 'contains'? – njzk2

ответ

1

Это не работает, потому что:

if (a == "") 

не будет работать в Java

Использование

if (a.equals("")) 

вместо


Кроме того, String.contains не использует регулярные выражения, но CharacterSequences.
Итак, если ваша строка не содержит точных последовательностей символов "[a-z]" или "[A-Z]" (и только одна из этих двух строк), вы никогда не получите соответствие.

См: http://developer.android.com/reference/java/lang/String.html#contains(java.lang.CharSequence)

+1

Просто для добавления ясности: для объектов (a == "") сравниваются ссылки в памяти между a и "". Использование метода String.equals (a, b) сравнивает значения строк. – lacraig2

+1

@ lacraig2 Спасибо за обогащение. –

+1

В Android у нас также есть _TextUtils.isEmpty (String) _, который сравнивается с _null_ и пустой строкой. – harism

0

Проблема заключается в том:

if (a == "") 

Строки нельзя сравнивать, как это. Вместо этого проверьте размер, равный 0, или против определенной строки с помощью метода equals().

Смежные вопросы