在我的应用程序中,我有一个edittext来输入url,然后edittext有:
android:imeOptions="actionDone"
因此当有人按下键盘的输入按钮时,应用程序会连接并且键盘会被解除。但是我还有一个可以单击而不是使用enter命令的按钮,在这种情况下,我会模拟按下软键盘的完成按钮,而不是使用其他线程中建议的尖端方法来关闭键盘。我是这样做的:
v.findViewById(R.id.button1)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
edit.dispatchKeyEvent(new KeyEvent(0, 0, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER, 0));
edit.dispatchKeyEvent(new KeyEvent(0, 0, KeyEvent.ACTION_UP, KeyEvent.KEYCODE_ENTER, 0));
}
});
我有一个动作的监听器,它捕获事件:
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
Log.e(TAG, "Key event received "+actionId);
if (actionId == EditorInfo.IME_ACTION_DONE ||
(event.getKeyCode() == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP) ){
Log.e(TAG, "Key event received will connect");
onConnectToServer(null);
return true;
}else if(event.getKeyCode() == KeyEvent.KEYCODE_ENTER) return true;
return false;
}
但我收到错误,似乎关键事件被发送100次我并且键码不被识别为输入按钮。 我不想在其他方法中解除键盘的原因:
InputMethodManager imm = InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mFilterEditText.getWindowToken(), 0);
是因为在那段代码之后,当我需要键盘显示在另一个片段中时,键盘不再自动显示(+我只有一个活动和许多片段因此无法在清单中设置) 有任何想法吗? THKS
答案 0 :(得分:3)
简直不敢相信:
edi3.onEditorAction(EditorInfo.IME_ACTION_DONE);