【发布时间】:2014-01-16 21:02:58
【问题描述】:
我有多个文本框。它们每个都附加了一个 TextWatcher。现在我想为最后一个强制文本框设置一个 OnKeyListener,这样我就可以处理 Enter 键。当在这个文本框中按下回车键时,我想将此文本框的文本设置为默认值,然后我想保存所有文本框中的数据,清除所有文本框并将焦点设置为第一个文本框,以便用户可以输入新数据。但是,显然我无法有效地请求关注 TextBox.OnKeyListener 的 onKey-eventhandler 中的任何其他 TextBox 或 Button。
myLastTextBox.setOnKeyListener( new EditText.OnKeyListener() {
@Override
public boolean onKey(View arg0, int arg1, KeyEvent event) {
if (event!= null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN){
Button nextB = (Button) findViewById(R.id.myBtn);
nextB.performClick(); //the function called validates all fields,
//saves the data to lists, sets all editText
//to "", requests focus to the first editText.
res= true;
}
else if (event!= null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP) {
res=true; //consume also the keyUp event of the enter key.
}
return res;
}
});
当程序从 onKey 事件处理程序返回时,焦点仍然在同一个文本框中。任何帮助表示赞赏。
编辑: 好的,我想简化问题,但也许我让它太容易了。按下 Enter 后,我不仅要设置焦点,而且要调用一个函数,读取、保存、清除所有文本框,然后将焦点设置到第一个 editText。
【问题讨论】:
-
您是否尝试过在 XML 布局中设置下一个焦点键?我认为它可能会做你正在尝试的开箱即用
-
谢谢,试过了,但在这种情况下不起作用。
标签: android event-handling android-edittext