Android:getText 和 setText 不适用于带有 onKeyListener 的 EditText

标签 android android-edittext gettext settext

我正在开发一个 Android 应用程序,并且有一个包含 3 个 EditText 的 View 。我想要实现的是,在最后一个按下的数字键上应该为该 Activity 调用 okKey 事件。问题是对于我设置了 onKeyListener 的 EditText,getText 和 setText 方法都不起作用。请允许我解释一下:

假设我初始化一个空字符串

String string1 = "";

在我的 onCreate 方法中,我在其中一个 EditText 上设置了 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 键(设置为下一步),它按预期工作。我也尝试在 Activity 的 onResume 方法中添加 setText(""),但结果没有区别。感谢您花时间阅读我的问题!

已编辑:添加了“return false;”在 onKey 方法的末尾,我在工作中有它,但错过了把它放在这个问题中,Chris 的回答提醒了我。

最佳答案

当您设置 EditText3 的 OnKeyListener 时,您将用它替换按下某个键时发生的情况。在 onKey 结束时尝试 return false;。这应该将值传递到正确的位置。

http://developer.android.com/reference/android/view/View.OnKeyListener.html

返回

如果监听器已使用该事件,则为 True,否则为 false。

关于Android:getText 和 setText 不适用于带有 onKeyListener 的 EditText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6337060/

相关文章:

android - Android 上的 JRE

java - SOAP 信封响应错误 : Error reading XMLStreamReader

c# - Xamarin.Forms App MediaRecorder无法在Jiayu S3上运行

java - SharedPreferences 无法工作/保存 EditText 字段中的数据

Android NDK 获取 ArrayList 错误

android - 错误状态和正常状态有不同颜色的提示

java - ListView 在 EditText 增长时滚动到顶部

php - Gettext (i18n) 和 Smarty 运行不稳定

python - 找不到 msguniq。确保安装了 GNU gettext 工具 0.15 或更新版本。 (Django 1.8 和 OSX ElCapitan)

PHP gettext 不起作用