その他:
私はそうのようなEDITTEXT上のKeyListenerを持っています。
tip = (EditText) findViewById(R.id.tip);
tip.setOnKeyListener(new EditText.OnKeyListener(){
public boolean onKey(View v, int keyCode, KeyEvent event) {
Log.i("debug123", "onKeyListener. event.getKeyCode(): " + event.getKeyCode());
// If the event is a key-down event on the "enter" button
if ((event.getAction() == KeyEvent.ACTION_DOWN) && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
checkInput();
return true;
}
return false;
}
});
しかし、誰softkeyboardストロークが認識されませんか。?私はBACK-ボタン(HardwareButton)で活動を去ったときのみ、リスナーがアクションを認識しています。しかし、私は読むことをすべてから、これは私が仕事をしたい場合のEditTextでのユーザ入力を移動するための方法です。
。メリーランド州Asaduzzaman:
setOnKeyListener
ときに呼び出されるコールバック関数を登録し、ハードウェアキーは、このビューに押されます。でキープレスのソフトウェアの入力方法は、一般的にこのリスナーのメソッドをトリガしません。
setOnEditorActionListener
アクションはテキストビュー上で実行されたときに呼び出される特殊なリスナーを設定します。ときに呼び出されるキーを入力して押されたとき、またはアクション IMEに供給されるが、ユーザによって選択されます。
使用して、あなたの問題を解決するためにsetOnEditorActionListener
、以下を確認してください。
- 追加
imeOptions
とinputType
あなたへEditText
<EditText
android:id="@+id/tip"
android:imeOptions="actionDone"
android:inputType="text"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
- その後、追加
setOnEditorActionListener
にEditText
tip.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if ( (actionId == EditorInfo.IME_ACTION_DONE) || (event.getKeyCode() == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN) ) {
checkInput();
return true;
} else {
return false;
}
}
});
ここに、
actionId == EditorInfo.IME_ACTION_DONE
ソフトキーボード(IME)からハンドルアクションevent.getKeyCode() == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN
ハンドルは、ハードウェアキーボードからキーを入力してください