Acara untuk Menangani Fokus dari EditText

145

Adakah yang bisa menyarankan saya acara yang terkait dengan fokus EditText? Aplikasi saya mengandung EditText, yang menerima URL di dalamnya.

Sekarang masalah saya adalah, bahwa setelah pengguna akan memasukkan URL di bidang dan Pindah lebih lanjut, tanpa ada peristiwa klik, yaitu ketika fokus akan bergerak dari EditText, itu akan mendeteksi Url yang dimasukkan dan pergi ke server.

Jika saya mendapatkan balasan menggunakan Json Parsing, maka akan lebih mudah.

Sheetal Shelar
sumber

Jawaban:

519

Berikut adalah contoh pendengar fokus.

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();
        }
    }
});
Pratik
sumber
Dalam fragmen di dalam pendengar perubahan fokus saya tidak dapat memperbarui UI saya, ada ide?
moDev
2
Ini tidak bekerja. Jika keyboard disembunyikan dengan "masuk" atau menyembunyikan tombol keyboard pada beberapa perangkat, "kehilangan fokus" tidak akan diaktifkan. Jika Anda fokus pada edit teks lagi, itu tidak akan mengajukan "mendapat fokus".
SnowWolf
1
Ketahuilah bahwa jika Anda mengatur tata letak Anda untuk mengubah ukuran ketika keyboard lunak ditampilkan, atau melakukan sesuatu yang berhubungan dengan menggunakan TextWatcher, pendengar mungkin dipanggil banyak - bahkan dua kali untuk setiap karakter yang diketik! stackoverflow.com/questions/14727248/…
M_M
12
  1. Nyatakan objek EditText di atas kelas:

     EditText myEditText;
  2. Temukan EditText di Fungsi onCreate dan setOnFocusChangeListener dari 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();
                    }
    
                }
            });

Ini bekerja dengan baik.

Wajid khan
sumber
11

ketika di kotlin akan terlihat seperti ini:

editText.setOnFocusChangeListener { view, hasFocus ->
        if (hasFocus) toast("focused") else toast("focuse lose")
    }
arjava
sumber
4

Bagi kita yang solusi di atas yang valid ini tidak bekerja, ada solusi lain di sini

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

            }
        }
    });
Dev_Man
sumber
Ini berhasil tetapi saya tidak mengerti solusi di atas tidak berhasil untuk saya
shruti iyyer