Событие для обработки фокуса EditText

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

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

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

Ответ 1

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

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();
        }
    }
});

Ответ 2

  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

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

 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();

            }
        }
    });