2010-11-13 34 views

cevap

13

Bu sorunun yanıtı iki yönlü olmalıdır. Anahtarın nasıl oluşturulduğu belirlenir. Donanım tuşuna basılırsa, aşağıda açıklanan her iki yaklaşım geçerlidir. Yazılım tuşuna basılırsa, o zaman gerçek içeriğe bağlıdır.

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 

    switch (keyCode) { 
     case KeyEvent.KEYCODE_A: 
     { 
      //your Action code 
      return true; 
     } 
    } 
    return super.onKeyDown(keyCode, event); 
} 

2: dikkatle aşağıdaki işlevi geçersiz kılmak gerek

: tuşu Menü tuşu üzerinde uzun süre basarak elde edilmiştir yumuşak klavye üzerindeki basarak sonucu

1.) olsaydı .) Etkinliğiniz EditText içeriyorsa ve softkeyboard ondan alınmışsa, temel olay zaten EditText tarafından tüketildiğinden ilk yaklaşım işe yaramaz. Sen metni kullanmak Dinleyici değişti gerekir: 2.3 çalışan bu kodu hiç de, yolu olay anahtarlarını kontrol etmek işleri olmaz varsa lütfen ssoo sürüm 2.3 kadar ise

mMyEditText.addTextChangedListener(new TextWatcher() 
{ 
    public void afterTextChanged(Editable s) 
    { 
    } 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) 
    { 
     /*This method is called to notify you that, within s, the count characters beginning at start are about to be replaced by new text with length after. It is an error to attempt to make changes to s from this callback.*/ 
    } 
    public void onTextChanged(CharSequence s, int start, int before, int count) 
    { 
    } 
); 
+0

Önerilen yaklaşımı denediniz mi? Yararlı mıydı? – Zelimir

+0

Bu sadece, arka giriş ve menü gibi sert tuş olaylarını yakalar, ancak yumuşak giriş tuşu olaylarını değil. – ozmank

+0

Bu konuda emin misin? Harfler için de benim için doğru çalışıyor. Hangi telefonda test ettin? – Zelimir

4

Zelimir kod çalışır bütün ssoo versiyon Bununla

@Override 
    public boolean dispatchKeyEvent(KeyEvent event) { 
     Log.d("hello", String.valueOf(event.getKeyCode())); 
     return super.dispatchKeyEvent(event); 
    } 

, bir WebView'da basılan tuşu kontrol edebilir ya da her yerde vardır() dispatchKeyEvent beraberdir. Tek hata, "hareket düğmesini" kontrol edememeniz ... nedenini bilmiyorum.

1

Bunu bir deneyin, bu mükemmel bir şekilde çalışır.

@Override 
public boolean onKeyUp (int keyCode, KeyEvent event){ 
char c = (char) event.getUnicodeChar(); 
//Do something.... 
return super.onKeyUp(keyCode, event); 
} 
İlgili konular