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

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

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

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

3 ответа

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

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

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

editText.setOnFocusChangeListener { view, hasFocus ->
        if (hasFocus) toast("focused") else toast("focuse lose")
    }
  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();
                    }
    
                }
            });
    

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

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

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

            }
        }
    });
Другие вопросы по тегам