2016-04-11 2 views
0

Я знаю, что есть несколько ответов на это, но никто, кажется, не решить мою проблему:Проверка EditText пуст через слушатель

У меня есть следующий код:

myEditText.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

    } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

      Log.i("Ram = ", myEditTExt.getText().toString()); 
      Log.i("Ram = ", s.toString()); 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 

      Log.i("Ram = ", myEditTExt.getText().toString()); 
      Log.i("Ram = ", s.toString()); 

     } 
    }); 

Ни OnTextChanged или afterTextChanged показывает это когда текст становится полностью пустым. Пример Run - это тот же случай, вызвал ли я метод onTextChanged или afterTextChanged.

текстовое поле начинается со значением 25,0 и я нажимаю на него и удалить его один символ за один раз, и это выход на бревне

Обратите внимание, что я только положить 1 заявление - я написал все четыре заявления для ясности относительно того, что я пробовал, но любой из 4-х только дайте мне ниже выход:

04-11 17:24:37.661 11221-11221/zooter.com.cal I/Ram =: 25. 
04-11 17:24:39.493 11221-11221/zooter.com.cal I/Ram =: 25 
04-11 17:24:41.198 11221-11221/zooter.com.cal I/Ram =: 2 

Что я делаю не так ??

+0

, что вы хотите только вы хотите проверить погоды EditText пуст? –

+0

if (myEditTExt.getText(). ToString(). Length() == 0) {// Do Stuff} Это сделает трюк для вас –

+1

@JhamanDas - не понимаю ваш вопрос – zooter

ответ

1
 @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

      if (s.toString().length() == 0) { 
       Log.i("Ram = ", "Empty"); 
       Log.i("Ram = ", ""); 
      } 

      Log.i("Ram = ", myEditText.getText().toString()); 
      Log.i("Ram = ", s.toString()); 
     } 

android.util.Log не работает, если сообщение журнала пуст. (см. второй вызов журнала внутри, если условие не работает). Однако я думаю, что вы неправильно используете тег. Я предлагаю сделать следующее:

private static final String TAG = "RAM"; 
... 
    myEditText.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

      Log.i(TAG, "Ram: " + s.toString()); 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 

      Log.i(TAG, "Ram: " + s.toString()); 

     } 
    }); 

или набор TAG на имя активности (на самом деле TAG полезна только для фильтрации LogCat)

+0

Все, спасибо за помощь, но это самый точный ответ. \t i.e. Log.i ("Ram =", "") // Это не сработает .... android.util.Log не работает, если сообщение журнала пуст. Не имеет значения, использую ли я Log.i или Log.d или изменяю теги журнала – zooter

1

попробовать это с myEditText

myEditText.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 


      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 
       System.out.println(">>>>>" + s.toString().length()); 

       if(s.toString().length()==0){ 
         //DO Stuff Here 
        } 
      } 

      @Override 
      public void afterTextChanged(Editable s) { 

      } 
     }); 

Выход Ниже

I/System.out: >>>>> 1

I/System.out : >>>>> 2

I/System.out: >>>>> 3

I/System.out: >>>>> 4

I/System.out: >>>>> 5

I/System.out: >>>>> 6

I/System.out: >>>>> 7

I/System.out: >>>>> 8

I/System.out: >>>>> 9

I/System.out: >>>>> 10

I/System.out: >>>>> 11

I/System.out: >>>>> 10

I/System.out: >>>>> 9

I/System.out: >>>>> 8

I/System.out: >>>>> 7

I/System.out: >>>>> 6

I/Sys tem.out: >>>>> 5

I/System.out: >>>>> 4

I/System.out: >>>>> 3

I/System.из: >>>>> 2

I/System.out: >>>>> 1

I/System.out: >>>>> 0

+0

полезно, но не объясняет, почему он не работает – zooter

1

Вы должны положить ваши если условие в afterTextChanged function.Like это:

@Override 
public void afterTextChanged(Editable s) { 
    Log.d("", "afterTextChanged —>"+s.getText().toString()); 
    if(TextUtils.isEmpty(s.getText().toString()){ 
     //here to do stuff 
    } 
} 
0

Я попытался ур код на моей системе, он работает

  • вам не нужны оба

     Log.i("Ram = ", myEditTExt.getText().toString()); 
         Log.i("Ram = ", s.toString()); 
    

Либо 1 будет делать

И как @Rakshit Nawani предложил использовать различные теги .. должны работать

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