2015-02-26 4 views
0

Привет У меня есть настраиваемый диалог при нажатии на new_post_message. Я хочу, чтобы он проверял, что есть что-то в edittext раньше, и если ничего не введено, чтобы отключить кнопку, любая помощь будет отличной. Благодаря!Отключить кнопки, если текстовое поле пуст в настраиваемом диалоговом окне

post_button.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        items.add(new MessageItem(55, new_message_to.getText().toString(), "image", DateTime.now(), new_message_text.getText().toString())); 

        itemAdapter.notifyDataSetChanged(); 

        if (v.getId() == R.id.button_post); 
        new_message_to.setText(""); 
        new_message_text.setText(""); 

        dialog.dismiss(); 
       } 
       private TextWatcher textWatcher = new TextWatcher() 

       {@Override 
       public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) { 

         new_message_to.addTextChangedListener(textWatcher); 
         new_message_text.addTextChangedListener(textWatcher); 

        } 

        @Override 
        public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) { 
         String s1 = new_message_to.getText().toString(); 
         String s2 = new_message_text.getText().toString(); 


         if (s1.equals("") || s2.equals("")) { 
          post_button.setEnabled(false); 
         } else { 
          post_button.setEnabled(true); 
         } 
        } 
        @Override 
        public void afterTextChanged(Editable editable) { 

        } 
       }; 

      }); 
+0

Нет, если я оставляю оба поля edittext пустым, он не отключает кнопку – Sim

ответ

0

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

if (new_message_text.equals("")|| new_message_to.equals("")) { 
    .... 
} 

new_message_text никогда не равна "", потому что "" является EditText (а вид для ввода текста), а не строка. Вы должны сравнить его с введенным текстом.

Так что вы должны сделать:

if (new_message_text.getText().toString().equals("")|| new_message_to.getText().toString().equals("")) { 
    ... 
} 
0

Вам нужно установить textWatcher в EditText new_message_to и new_message_text в

new_message_to.addTextChangedListener(textWatcher); 
new_message_text.addTextChangedListener(textWatcher); 

в и использовать TextWatcher метод как

private TextWatcher textWatcher = new TextWatcher() {@Override 
     public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) { 

     } 

     @Override 
     public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) { 
       String s1 = new_message_to.getText().toString(); 
       String s2 = new_message_text.getText().toString(); 

       if (s1.equals("") || s2.equals("")) { 
        post_button.setEnabled(false); 
       } else { 
        post_button.setEnabled(true); 
       } 
      } 
     @Override 
     public void afterTextChanged(Editable editable) {} 
    }; 

и удалить

if (v.getId() == R.id.button_post); 
         new_message_to.setText(""); 
         new_message_text.setText(""); 

с onClick способ.

Редактировать использование textWatcher метод в классе активности и удалить из post_button.setOnClickListener и использовать

new_message_to.addTextChangedListener(textWatcher); 
new_message_text.addTextChangedListener(textWatcher); 

в OnCreate метод в прошлом.

+0

, где я должен положить new_message_to.addTextChangedListener (textWatcher); – Sim

+0

Можете ли вы проверить мой обновленный код – Sim

+0

@sim использовать метод textWatcher в вашем классе активности и удалить из 'post_button.setOnClickListener' –