我正在开发一个 Android 应用程序并查看 3 个 EditTexts。我想要实现的是,在最后一个按下的数字键上应该调用该活动的 okKey 事件。问题是对于我设置 onKeyListener 的 EditText,getText 和 setText 方法都不起作用。请允许我解释一下:
假设我初始化一个空字符串
String string1 = "";
在我的 onCreate 方法中,我在其中一个 EditTexts 上设置了 onKeyListener
@Override
public void onCreate(Bundle savedInstanceState) {
...
findViewById(R.id.EditText3).setOnKeyListener(this);
...
}
现在,如果我在覆盖 okKey 方法中编写以下代码
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode >= KeyEvent.KEYCODE_0 && keyCode <= KeyEvent.KEYCODE_9) {
string1 += ((EditText) findViewById(R.id.EditText1)).getText();
string1 += ((EditText) findViewById(R.id.EditText2)).getText();
string1 += ((EditText) findViewById(R.id.EditText3)).getText();
((EditText) findViewById(R.id.EditText1)).setText("");
((EditText) findViewById(R.id.EditText2)).setText("");
((EditText) findViewById(R.id.EditText3)).setText("");
}
return false;
}
只有 EditText1 和 EditText2 被清除,并且 EditText3 中的文本不会连接到 string1。如果我将 If 语句的条件替换为
if (keyCode == KeyEvent.KEYCODE_ENTER)
然后按 Enter 键(设置为 Next),它按预期工作。我也尝试在活动的 onResume 方法中添加 setText("") 但结果没有区别。感谢您花时间阅读我的问题!
编辑:添加了“return false;” 在 onKey 方法的最后,我把它放在了我的工作中,但错过了把它放在这个问题中,克里斯的回答提醒了我。