OnKeyListener - 不会注册所有事件

时间:2018-06-14 13:00:35

标签: android

我有一个奇怪的问题。我已经创建了一个编辑文本并设置了一个OnKeyListener。我想处理所有BACKSPACE点击。由于某种原因,它只识别第一次单击或edittext为空时发生的单击。如果editext中有任何文本,我没有反应,它只删除文本。问题是它甚至没有进入函数onKey

etCurrentText.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                Log.e("KEY",  "clicked");

                if(event.getAction() == KeyEvent.ACTION_DOWN) {
                    Log.e("keyCode", keyCode + "");
                    if (keyCode == KeyEvent.KEYCODE_DEL) {
                        Log.e("Backspace", "clicked");
                        activity.onKeyboardBackspace();
                    }
                }
                return false;
            }
        });
编辑:我发现了问题。我必须在嵌套if中返回true,但如果我这样做,它不会删除最后一个字符。我试过的是:

if(etCurrentText.getText().length() > 0)
                            etCurrentText.setText(etCurrentText.getText()
                                    .delete(etCurrentText.getText().length()-1, etCurrentText.getText().length()));
return true;

但现在它将指针设置在edittext的开头(但是当我再次点击它时仍会删除最后一个字母。)

编辑2:我设法通过这一行解决了这个问题:

etCurrentText.setSelection(etCurrentText.getText().length());

0 个答案:

没有答案