Android soft keyboard keyCode 66 called twice軟體鍵盤重複送出ENTER

前幾篇有介紹到EditText要怎樣來偵測所按下的按鈕"Android EditText Listening soft keyboard"確實可以很正常的運作,那篇內也有寫到如何偵測硬體鍵盤,但就在今天發現了這新問題,在Input的時候所有按鍵都是正常的,但在按下"ENTER"(中文環境下為"完成")居然會重複送出兩次,如果這按鈕沒作啥特別事情還好,但如果是需要送request給server就頭大了,把log印出來看了一下發現重複被執行了兩次,一次是按下,一次是放開,相對於Flash內就是Press&Release,iOS內就是TouchDownInside&TouchUpInside,而Android內則是ACTION_DOWN&ACTION_UP。

用法其實沒啥兩樣,就再多加上一個判斷就好
EditText.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
System.out.println("keyCode = "+keyCode+" || event = "+event);

if(event.getAction()==KeyEvent.ACTION_DOWN){
//按下
return true;

}else{
return true;
//放開
}

//return true = finish || false = track
return false;
}
});


相關連結
Android EditText Listening soft keyboard

沒有留言:

張貼留言