【问题标题】:Detecting backspace on an empty EditText在空的 EditText 上检测退格键
【发布时间】:2019-02-07 12:57:38
【问题描述】:

我正在尝试在空的EditText 视图中检测软键盘退格键。我搜索了 Stack Overflow 和 Google 以及大约 20 个类似的问题,但是 没有一个解决方案可以检测空 EditText 中的退格键。

所有答案都围绕这篇博客文章https://code.i-harness.com/en/q/4a914a 最后特别指出,这不会检测空 EditText 视图上的退格键。

非常感谢您的帮助。

【问题讨论】:

    标签: android soft-keyboard


    【解决方案1】:

    检测 EditText 的任何事件或文本更改的最可靠解决方案是使用 TextWatcher,但如果 EditText 已经为空,您无法在所有设备上检测退格/删除键事件。 p>

    请记住,这是不可能的,希望您或任何其他人不会浪费您的时间。

    【讨论】:

    • 我的意思是,我能够在我的设备上检测到退格,所以这是可能的。
    • @0xCursor 我认为这取决于您使用的键盘。它不适用于自定义键盘。
    【解决方案2】:

    希望这可能会有所帮助。我尝试在我的项目中使用它。

    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);
    

    【讨论】:

      【解决方案3】:

      您可以使用以下代码检测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 是否为空,而是在为空时单击退格键。
      • 它仍然不能解决我的问题,我需要在空的 EditText 视图上检测退格键..
      猜你喜欢
      • 1970-01-01
      • 2010-12-30
      • 2023-03-13
      • 1970-01-01
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      • 2019-07-01
      • 2018-05-08
      相关资源
      最近更新 更多