我有一个奇怪的问题。我已经创建了一个编辑文本并设置了一个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());