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.

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

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.


11

ketika di kotlin akan terlihat seperti ini:

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

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

            }
        }
    });

Ini berhasil tetapi saya tidak mengerti solusi di atas tidak berhasil untuk saya
shruti iyyer
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.