Bir EditText'e bir OnKeyListener ekledim. Bir KeyEvent'i yakalamak için onKey işleyicisini geçersiz kıldım.EditText isabet üzerinde anahtarı girin onKey iki kez
Bir kullanıcı enter tuşuna basarsa (ya bilgisayar emülatör kullanırken anahtarı veya donanım klavyesini kullanarak donanım giriş tuşunu kullanarak), onKey işleyicisi iki kez yürütülür. Her iki yürütme de keyCode 66'ya sahiptir.
Bu neden oluyor?
Ekranımın, kullanıcının giriş tuşuna bastığında, bir arama gerçekleştirilmesini istiyorum. Olanlardan dolayı, arama iki kez gereksiz yere oluyor.
Benim yöntemim şöyle görünür:
mFilter.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_ENTER) {
// perform search
return true;
}
return false;
}
});
. Sadece kod değil, 'KeyEvent' kontrol edin. HTC klavye ile tarihsel olarak bazı sorunları buldum, ancak bazen birden çok olayı tetikliyorlar (ve bazen kullanıcılar sadece spaz yapıp "birden çok kez" enter "tuşuna basarlar). eylem ateşlendi, böylece kaza sonucu ikinci ateşlemeyi önleyebilirsiniz. –
İyi fikir. Arama görevi başladığında, birkaç saniyelik zamanlayıcı ile başka bir görevi başlatacağım ve bu iş parçacığı bitene kadar, kullanıcı tekrar giriş tuşuna basamayacaktır. – Andrew
Bu cevap olarak işaretlenmemeli, lütfen aşağıdaki (daha kullanışlı) cevaplardan birini cevap olarak işaretleyiniz (Abdul'un tavsiye ederim). Teşekkürler. – Stunner