2011-09-30 181 views
14

我想在軟鍵盤上做一些東西輸入按鍵。看到我的代碼和下面的輸出。它執行兩次,但我希望它只執行一次。如何解決它?軟鍵盤輸入鍵事件句柄

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    txt = (EditText)findViewById(R.id.txt); 
    txt.setOnKeyListener(new OnKeyListener() { 

     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if (keyCode == KeyEvent.KEYCODE_ENTER) { 
       Log.e("test","--------- on enter"); 
       return false; 
      } 
      return false; 
     } 
    }); 
} 

This is my output for this

回答

19

儘可能最好的方式:

if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN) { 
    Log.d(TAG, "enter_key_called"); 
} 
+2

也許應該去ACTION_UP代替,這樣用戶就可以取消我刪除他或她的手指的事件?併爲這些添加KeyEvent.KEYCODE_DPAD_CENTER。 – Kenneth

+0

https://developer.android.com/reference/android/view/View.OnKeyListener.html:'當硬件密鑰被調度到視圖時調用.'。 這不適用於軟鍵盤。 – mbonnin

+0

在EditText視圖中設置inputType =「text」,使其適用於軟鍵盤 – SammyT