EditText'in Odakını Ele Alma Etkinliği


145

Herkes bana odak noktası ile ilgili herhangi bir olay önerebilir EditText? Uygulamam EditText, içinde bir URL kabul eden bir a içeriyor .

Şimdi benim sorunum, kullanıcı alandaki URL girip sonra ileri taşıyın, herhangi bir tıklama olayı olmadan, yani odak hareket edecek EditText, girilen Url tespit ve sunucuya gider olmasıdır.

Json Parsing kullanarak cevap alırsam, o zaman daha uygun olacaktır.

Yanıtlar:


519

İşte odak dinleyici örneği.

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

Odak değişikliği dinleyicisinin içindeki parçalarda kullanıcı arayüzümü güncelleyemiyorum, herhangi bir fikir?
moDev

2
Bu çalışmıyor. Klavye bazı cihazlarda "enter" veya klavye düğmesini gizle tarafından gizlenmişse, "odağı kaybetme" tetiklenmez. Metni yeniden düzenlemeye odaklanırsanız, dosya "odağı da alır" dosyasını kaydetmez.
SnowWolf

1
Yazılım klavyesi görüntülenirken düzeninizi yeniden boyutlandırmak üzere ayarladıysanız veya bir TextWatcher kullanarak ui ile ilgili bir şey yaptıysanız, dinleyici çok fazla çağrılabilir - yazılan her karakter için iki kez bile! stackoverflow.com/questions/14727248/…
M_M

12
  1. EditText nesnesini sınıfın üstüne bildir:

     EditText myEditText;
  2. OnCreate İşlevinde EditText'i bulun ve EditText'in setOnFocusChangeListener öğesini bulun:

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

İyi çalışıyor.


11

kotlin'de şöyle görünecek:

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

4

Bu geçerli çözümün işe yaramadığı bizler için burada başka bir çözüm var

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

            }
        }
    });

Bu işe yaradı ama çözümün üstündeki
y'yi anlamıyorum
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.