检测空 EditText 上的退格键
Detecting backspace on an empty EditText
我正在尝试检测空 EditText
视图中的软键盘退格键。我搜索了 Stack Overflow 以及 Google 和 ~20 个类似的问题,但是
none 有一个检测空 EditText
中的退格键的解决方案。
所有答案都围绕这篇博文展开https://code.i-harness.com/en/q/4a914a
最后特别指出,这不会检测空 EditText
视图上的退格键。
非常感谢您的帮助。
您可以使用此代码检测 edittext 是否为空:
EditText usernameEditText = (EditText) findViewById(R.id.editUsername);
sUsername = usernameEditText.getText().toString();
if (sUsername.matches("")) {
Toast.makeText(this, "You did not enter a username", Toast.LENGTH_SHORT).show();
return;}
检测 EditText 的任何事件或文本更改的最可靠解决方案是使用 TextWatcher,但如果 EditText 已经为空,您无法检测 backspace/delete 键事件 在所有设备上。
请记住这是不可能的,希望您或任何其他人不会浪费您的时间。
希望这可能有所帮助。我尝试在我的项目中使用它。
public class MTextWatcher implements TextWatcher, View.OnKeyListener {
private int prevLen;
public MTextWatcher(int prevLen) {
this.prevLen = prevLen;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
//do something if you need
prevLen = s.toString().length();
}
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DEL && prevLen == 0){
// here you can trap the delete key pressed on empty edit text
}
return false;
}
}
接下来您可以使用这样的编辑文本附加此侦听器
MTextWatcher watcher = new MTextWatcher(edittext.getText().toString().length());
edittext.addTextChangedListener(watcher);
edittext.setOnKeyListener(watcher);
我正在尝试检测空 EditText
视图中的软键盘退格键。我搜索了 Stack Overflow 以及 Google 和 ~20 个类似的问题,但是
none 有一个检测空 EditText
中的退格键的解决方案。
所有答案都围绕这篇博文展开https://code.i-harness.com/en/q/4a914a
最后特别指出,这不会检测空 EditText
视图上的退格键。
非常感谢您的帮助。
您可以使用此代码检测 edittext 是否为空:
EditText usernameEditText = (EditText) findViewById(R.id.editUsername);
sUsername = usernameEditText.getText().toString();
if (sUsername.matches("")) {
Toast.makeText(this, "You did not enter a username", Toast.LENGTH_SHORT).show();
return;}
检测 EditText 的任何事件或文本更改的最可靠解决方案是使用 TextWatcher,但如果 EditText 已经为空,您无法检测 backspace/delete 键事件 在所有设备上。
请记住这是不可能的,希望您或任何其他人不会浪费您的时间。
希望这可能有所帮助。我尝试在我的项目中使用它。
public class MTextWatcher implements TextWatcher, View.OnKeyListener {
private int prevLen;
public MTextWatcher(int prevLen) {
this.prevLen = prevLen;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
//do something if you need
prevLen = s.toString().length();
}
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DEL && prevLen == 0){
// here you can trap the delete key pressed on empty edit text
}
return false;
}
}
接下来您可以使用这样的编辑文本附加此侦听器
MTextWatcher watcher = new MTextWatcher(edittext.getText().toString().length());
edittext.addTextChangedListener(watcher);
edittext.setOnKeyListener(watcher);