安卓系统,退格/删除键无法使用。

3

当设置OnKeyListener时,退格/删除键无法正常使用。

我在EditText上设置了OnKeyListener。然后某些键的默认操作就不能正常工作了,比如DELETE/Backspace。然后我改用自己的文本删除函数来操作字符串。但这似乎非常复杂。

我必须获取选择内容,进行子字符串处理等等。有没有其他解决方案可以使键正常工作?


你正在使用哪个 Android API 和设备进行测试?这不是通常发生的情况。 - akkilis
Android 2.2和三星Galaxy - M Rijalul Kahfi
检查您的方法的返回值。 - njzk2
你指的是哪个方法?onKey吗?我已经将其设置为true了。 - M Rijalul Kahfi
请查看以下链接:https://dev59.com/v2445IYBdhLWcg3wZJUn - Paul Beusterien
4个回答

3

这取决于您使用的输入法。 一些输入法实现的删除功能并不通过发送KEYCODE_DEL来完成。 建议尝试使用除默认输入法之外的其他输入法。

例如,如果您长按DEL按钮,某些输入法将删除编辑框中的所有文本。 这无法通过KEYCODE_DEL完成。


1
事实上,我必须编写自己的文本删除方法来处理用户使用的任何输入法。 - M Rijalul Kahfi
@MRijalulKahfi 你有创建自己的文本删除方法的示例吗? - vrunoa

2

我也遇到了这个问题,我通过在onKeyListener函数中返回false来解决它。这应该会在其他键上执行正常操作。

.setOnKeyListener(new DialogInterface.OnKeyListener() 
{
     @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) 
     {
        //your workarounds;
        return false;
     }
})

0

有两个已知问题影响着随 Android 一起发行的默认(LatinIME)Google 键盘的 KEYCODE_DEL:问题 42904 和 62306。

我已经研究了这个问题,并设计了一个解决方法,使用代码似乎可以解决这两个问题。该解决方法可以在此处找到:

Android - cannot capture backspace/delete press in soft. keyboard


0

我遇到了和你一样的问题,但是我偶然发现了解决方法。显然,我将setOnKeyListener设置为'return true'。当我将其更改为'return false'后,手机键盘再次可以完美地在edittext上使用退格键。希望这可以帮到你:

解决方案:你现有的onkeylistener代码之一包含'return true'。通过将现有代码从'return true'更改为'return false'来纠正它。

.setOnKeyListener(new View.OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {
  ...
  return false;
                }
        });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接