Отображать текст ошибки только в течение определенного времени?

1

Как я могу отобразить setError() только для определенного количества времени?

if(editText.getText().length()==0)   
   editText.setError("please input text");  

Могу ли я заставить его исчезнуть через несколько секунд?

  • 0
    Этот вопрос даже не имеет смысла.
  • 2
    используйте второй поток, чтобы установить ошибку на null через фиксированный промежуток времени!
Теги:
android-edittext

2 ответа

-1
Лучший ответ

Попробуй это:

Используйте Handler в методе OnCreate, чтобы сохранить обратную ссылку на поток пользовательского интерфейса из потока Non ui, потому что, как только мы создаем Thread, мы удаляемся из потока Ui. Извините за неудобства для левой строки в предыдущий пост. Теперь он будет работать так, как вам хотелось

   Handler h;

    onCreate(......) {

    h = new Handler();

    ....
    ....

    }


        if(editText.getText().length()==0) {  
           editText.setError("please input text"); 
           new Thread (new Runnable() {
              public void run(){
                 try{
                    Thread.sleep(1000);

                    h.post(new Runnable() {

                      editText.setText("");    // this will put the non-ui work on the ui thread back

                  }
                 }catch(Exception ex){}
              }    
           }.start();




  }  
  • 2
    Я считаю, что это не работает, потому что ediText будет установлен пустой сразу после setError. editText.setText("") должен быть после Thread.sleep внутри потока.
  • 0
    Согласитесь с @TiagoAlmeida. Я думаю, что вы должны использовать postDelayed, чтобы автоматически скрывать setError после некоторого интервала.
1

Подумайте, используя уведомление тоста.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню