Событие для обработки фокуса EditText - PullRequest
126 голосов
/ 13 сентября 2011

Может кто-нибудь предложить мне какое-либо событие, связанное с фокусом EditText?Мое приложение содержит EditText, который принимает URL-адрес в нем.

Теперь моя проблема в том, что после того, как пользователь введет URL-адрес в поле и перейдет дальше, без какого-либо события щелчка, т. Е. Когда фокус переместится с EditText, он должен обнаружитьввел URL и идет на сервер.

Если я получу ответ с помощью Json Parsing, то это будет более удобно.

Ответы [ 4 ]

485 голосов
/ 13 сентября 2011

Вот пример слушателя фокуса.

editText.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override
    public void onFocusChange(View view, boolean hasFocus) {
        if (hasFocus) {
            Toast.makeText(getApplicationContext(), "Got the focus", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(getApplicationContext(), "Lost the focus", Toast.LENGTH_LONG).show();
        }
    }
});
10 голосов
/ 03 февраля 2018
  1. Объявление объекта EditText поверх класса:

     EditText myEditText;
    
  2. Найти EditText в функции onCreate и setOnFocusChangeListener EditText:

    myEditText = findViewById(R.id.yourEditTextNameInxml); 
    
    myEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                @Override
                public void onFocusChange(View view, boolean hasFocus) {
                    if (!hasFocus) {
                         Toast.makeText(this, "Focus Lose", Toast.LENGTH_SHORT).show();
                    }else{
                        Toast.makeText(this, "Get Focus", Toast.LENGTH_SHORT).show();
                    }
    
                }
            });
    

Работает нормально.

3 голосов
/ 22 июля 2017

Для тех из нас, кто не справился с вышеприведенным решением, здесь есть другой обходной путь

 searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View view, boolean isFocused) {
            if(!isFocused)
            {
                Toast.makeText(MainActivity.this,"not focused",Toast.LENGTH_SHORT).show();

            }
        }
    });
1 голос
/ 25 апреля 2019

когда в котлине это будет выглядеть так:

editText.setOnFocusChangeListener { view, hasFocus ->
        if (hasFocus) toast("focused") else toast("focuse lose")
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...