1. 程式人生 > >Android 監聽按鍵資訊的時候會出現兩次響應的解決辦法

Android 監聽按鍵資訊的時候會出現兩次響應的解決辦法

最近的專案裡面要監聽軟鍵盤的Enter的按鍵資訊,如下圖,需要在上一行按Enter的時候自動切換到下一行,以此類推。


但是有時候會出現點選一次,響應兩次的現象,也就是按一次Enter換兩行,經過半天的實踐,總結如下:

1.網上說有呼叫 OnEditorActionListener,而不是OnKeyListener 的方法,經過測試並不能解決問題,http://www.2cto.com/kf/201408/327967.html。估計是因為原文中是監聽android:imeOptions="actionSearch"的事件,而我要監聽的是Enter事件,可能有區別。

2.還有說法是必須區分對待KeyDown和KeyUp,確實是這樣的,因為當我只監聽KeyDown事件的時候,響應兩次的情況大幅降低了,但是還是偶爾會出現,特別是如果小米手機的輸入法中,輸入英語,出現待選詞的時候,按Enter會直接選中首選詞並換行,而且有一定機率換兩行。

3.最後的做法是只監聽KeyUp事件,完美解決了響應兩次的問題。

</pre><pre name="code" class="java">private final OnEditorActionListener onMyEditorActionListener = new OnEditorActionListener() {
		@Override
		public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
			// TODO 自動生成的方法存根
			if (v==mPswText &&event.getKeyCode() == KeyEvent.KEYCODE_ENTER && KeyEvent.ACTION_UP==event.getAction()) {
  				 //TODO what you want to do
  				return true;
  			}
return false;
}
}