2011-09-30 11 views
14

ソフトキーボードの入力キーを押すと何かしたいですか?下記の私のコードと出力を見てください。 2回実行されますが、1回だけ実行します。それを修正するには?ソフトキーボード入力キーイベントハンドル

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

関連する問題