我有这个表单,您可以在列表中添加多个名称。我有两个编辑文本,名字和姓氏。单击添加按钮时,焦点将从姓氏移回到第一个名称。效果很好:
public void onAddBtnClick(View v) {
addNameToList();
TextView txtFirstName = (TextView) findViewById(R.id.txtFirstName);
Selection.setSelection((Editable) txtFirstName.getText(), txtFirstName.getSelectionStart());
txtFirstName.requestFocus();
}
这里没问题。但是,当用户点击" Next"时,我希望它能做同样的事情。键盘内的按钮,即输入按钮。在这里,它执行addNameToList()中的所有函数,并遍历代码中的下几行。但它并没有从第二个文本视图中删除焦点:
EditText etLastName = (EditText) findViewById(R.id.txtLastName);
etLastName.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
Button btn = (Button) findViewById(R.id.btnAdd);
btn.performClick();
}
return true;
}
});
如您所见,我尝试执行performClick以查看是否可行,但它仍然保持焦点。我也尝试将焦点代码放在那里。无论如何我可以让它在输入上做同样的动作吗?