2011-04-05 57 views
7

我有,我想監視的KeyEvents一個EditText,我已經設置爲監聽如下:安卓的KeyListener的一個EditText沒有收到鑰匙

mText = (EditText) this.findViewById(R.id.title); 
mText.setOnKeyListener(new OnKeyListener() { 
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     final int view = v.getId(); 
     switch (view) { 
      case R.id.title: 
       Log.d(LOG_TAG, "key handled"); 
       break; 
     } 
     return false; 
    } 
}); 

我的問題是,當EditText上是被鍵入到使用虛擬鍵盤,觸發日誌記錄的唯一按鍵是退格鍵。我已經驗證所有其他按鍵都不會觸發onKey()。我確信這很簡單,但沒有發現任何似乎與此有關的SO。

感謝,

保羅

+1

從文檔'軟鍵輸入方法的按鍵不需要觸發這個監聽器中的方法,並且實際上不鼓勵這樣做。默認的Android鍵盤不會觸發任何針對任何針對Jelly Bean或更高版本的應用程序的鍵,並且只會將其用於一些按鍵,以將應用程序定位到Ice Cream Sandwich或更早版本的應用程序。「http://developer.android.com/reference /android/text/method/KeyListener.html – 2015-02-27 09:27:22

回答

15

嘗試使用addTextChangedListener(TextWatcher watcher)定義here有了它,你可以處理物理和軟鍵盤。 我希望它能幫助

+2

這正是我正在尋找 - 關鍵聽衆仍然奇怪的行爲,但感謝這一點。 – 2011-04-05 15:22:48

+0

沒問題,我很高興它幫助:) – raukodraug 2011-04-05 15:26:01

5

從Android參考在:

http://developer.android.com/reference/android/view/View.OnKeyListener.html

View.OnKeyListener

當硬件密鑰事件被調度到被調用

回調類概述 接口定義這個觀點。在鍵事件被賦予視圖之前,回調將被調用。這隻對硬件鍵盤有用; 一個軟件輸入法沒有義務觸發這個監聽器。

看來OnKeyListener是專門設計用來對硬件密鑰做出反應的!

+0

有趣的 - 很好找! – 2013-01-24 05:16:29

0

onKeyListener僅適用於:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

將其設置在onCreate方法。