EditTextがあります。テキストを入力した後、ユーザーがソフトキーボードのDone
キーを押すと、ボタンクリックイベントでも実装した検索操作を直接実行する必要があります。
これを試して
editText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(actionId==EditorInfo.IME_ACTION_DONE){
//do something
}
return false;
}
});
これを試して
[〜#〜] done [〜#〜]と[〜#〜] return [〜#〜]の両方で機能します。
EditText editText= (EditText) findViewById(R.id.editText);
editText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER
|| actionId == EditorInfo.IME_ACTION_DONE) {
// Do your action
return true;
}
return false;
}
});
KeyEvent
をキャッチして、そのキーコードを確認します。 FLAG_EDITOR_ACTION
は、入力キーに「次」または「完了」という自動ラベルが付けられたIMEからの入力キーを識別するために使用されます
if (event.getKeyCode() == KeyEvent.FLAG_EDITOR_ACTION)
//your code here
ドキュメントを見つける here .
第二の方法
myEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView view, int actionId, KeyEvent event) {
int result = actionId & EditorInfo.IME_MASK_ACTION;
switch(result) {
case EditorInfo.IME_ACTION_DONE:
// done stuff
break;
case EditorInfo.IME_ACTION_NEXT:
// next stuff
break;
}
}
});
これは、キーボードにEnter記号または次の矢印記号が表示されているかどうかにかかわらず、両方の状態で機能します
YourEdittextName.setOnEditorActionListener(new TextView.OnEditorActionListener()
{
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
{
if(actionId== EditorInfo.IME_ACTION_DONE||actionId==EditorInfo.IME_ACTION_NEXT)
{
//Perform Action here
}
return false;
}
});
赤線に直面している場合は、これを行います... alt + enterを押してKeyeventとEditorInfoをインポートすると、すべてのエラーが適切に削除されます。