2015-01-27 4 views
0

Я новичок андроид разработчик .. Теперь я хочу, чтобы проверить, все ли мои EditTexts пустые или нет .. Вот мой подход:Проверка пустой EditText внутри OnTextChanged

public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) { 
    // When user changed the Text 
    Log.d("qwe", String.valueOf(inputSearchNama.getText())); 
    if(String.valueOf(inputSearchNama.getText()).isEmpty() || String.valueOf(inputSearchJenis.getText()).isEmpty() || String.valueOf(inputSearchMerk.getText()).isEmpty()) { 
     DBHelper db = new DBHelper(getActivity()); 
     try { 
      db.openDataBase(); 
     } catch (SQLException sqle) { 
      throw sqle; 
     } 
     db.close(); 
     List<PriceList> getPrice = db.getSearchedPriceList(cs, String.valueOf(inputSearchMerk.getText()), String.valueOf(inputSearchJenis.getText())); 
     ListAdapter myAdapter = new MyAdapter(getActivity(), getPrice); 
     theListView.setAdapter(myAdapter); 
    } 
} 

Как вы можете видеть, когда я пытаюсь отладить мой EditText, он показывает qwe﹕ [ 01-27 20:15:03.783 214:0x103 I/InputReader ] вместо пустой строки. Любая идея?

+0

Какова точная проблема Youre перед? –

+0

Я не могу обнаружить пустой EditText .. –

+0

См. Мой ответ. String.valueOf не делает то, что, по вашему мнению, делает. – iheanyi

ответ

3

Try Ниже кода

private TextWatcher watcher; 
...................................... 
inputSearchNama.addTextChangedListener(watcher); //register watcher to edittext 
inputSearchJenis.addTextChangedListener(watcher); //register watcher to edittext 
inputSearchMerk.addTextChangedListener(watcher); //register watcher to edittext 
watcher = new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      if(inputSearchNama.getText().toString().trim().equals("")){ 
       //write your code here 
      } 
      if(inputSearchJenis.getText().toString().trim().equals("")){ 
       //write your code here 
      } 
      if(inputSearchMerk.getText().toString().trim().equals("")){ 
       //write your code here 
      } 

     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) {} 

     @Override 
     public void afterTextChanged(Editable s) {} 
    }; 
+0

Что будет делать ваша 'if statement'? Это то же самое, что три из них пустые? –

+0

Для каждого редактора, который выполнит эти три обратных вызова. Просто проверяя, являются ли данные editext, на которые пользователь edittext вводит тетч пустой или нет – sandeepmaaram

+0

Не то, что я хотел, моя важная проблема в том, что я могу проверить, не является ли EditText пустым. –

4

Вы можете использовать что-то вроде ниже, где edtContent является EditText. Если у вас есть несколько EditText's, определите TextWatcher в другом месте и передайте тот же экземпляр всем экземплярам EditText как TextChangedListener с помощью метода addTextChangedListener.

edtContent.addTextChangedListener(new TextWatcher() { 

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

     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      if (TextUtils.isEmpty(s.toString().trim())) { 

      } else { 

      } 
     } 
    }); 
0

Вот проблема.

getText() не возвращает строку. Он возвращает объект Editable.

См http://developer.android.com/reference/android/widget/EditText.html и http://developer.android.com/reference/android/text/Editable.html

Итак, когда вы конвертировать редактируемые в строку в вашем журнале заявления с помощью String.valueOf(), вы на самом деле печать информации из редактируемой, не получая значение строки он держит.

Try:

log.d("qwe", inputSearchNama.getText().toString()); 
+0

По-прежнему то же поведение, 'Log.d (" test ", inputSearchNama.getText(). ToString())' возвращает 'test: [01-31 11: 33: 22.289 103: 0xc0 V/AudioPolicyManagerBase]' –

+0

Вы вы правильно вернули свое приложение? Вы не должны получать то же поведение. – iheanyi