java - 当 EditText 中只有一个字符时防止退格

标签 java android string ime textwatcher

抱歉,我的标题太长了,我找不到其他方式来表达它。因此,我有一个 EditText ,当只剩下一个字符时(我可以通过 TextWatcher 监视它),我想禁用退格键。这是我到目前为止所拥有的:

    editText$.addTextChangedListener(new TextWatcher() {
    private String current = "";
    String one = "1";   
    String empty = one; //Right now only set to "1" but want to set to "[any character]"
    public void onTextChanged(CharSequence s, int start, int before, int count) {       
    }
    public void afterTextChanged(Editable s) {

        if (s.toString().equals(empty)) {
            editText$.setOnKeyListener(new OnKeyListener() {                 
                public boolean onKey(View v, int keyCode, KeyEvent event) {                 
                     if(keyCode == KeyEvent.KEYCODE_DEL){                        
                           return true; //Disable backspace key here
                         }                  
                return false;       
                    }
            });         
        }       
    }
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }
  });

除两个关键问题外,此方法有效:

1) 我只能弄清楚如何检查特定字符(“1”)与我想要检查的任何一个字符。我已经尝试过 String empty = "1"+ "2"+ "etc"; 但当我这样做时,代码不再起作用,而且,这似乎是一种低效的完成任务的方法。

2) 当 EditText 具有类似 134 的内容时,即使“1”不是唯一的字符,退格键也会被禁用。显然,如果“1”是第一个字符,那么其余的是什么并不重要。这是我的主要问题。

我知道这是一个很多问题,但如果您能提供任何帮助来帮助我解决这两个问题,我们将不胜感激。谢谢。

最佳答案

您可以使用 if (s.toString().length() == 1) 来检测该框是否只有 1 个字符,如果为 true,则禁用该按钮(并启用它如果是假的话)。

关于java - 当 EditText 中只有一个字符时防止退格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14419036/

相关文章:

c - 尝试抓取 C 中空格后的字符

.net - .NET字符串的内部格式是什么?

c# - 秒倒计时器

java - Spring Kafka - 防止消费者在 Spring Boot 构建期间连接 Kafka 主题

android - 在 ViewPagerIndicator 的两侧创建模糊效果

java - 如何在android中显示警报时检测搜索按钮

安卓工作室 3.3.1 :Some breakpoints are shown without the tick and not being hit

java - 关于如何将 @autowire 声明放置在父类/接口(interface)的 protected 变量上的混淆。这是如何 Autowiring 的?

java - 将 ActionBar 添加到 PreferenceActivity

java - java中模拟OS进程/抢占式线程停止/classloader+线程进程模拟