【问题标题】:How to prevent user from entering zero as an input?如何防止用户输入零作为输入?
【发布时间】:2013-12-13 11:04:05
【问题描述】:

我正在尝试将输入验证添加到用户输入数值的一组三个 EditText。 我面临的问题是计算工作用户不能输入零​​作为输入字段之一,否则应用程序将崩溃。

我尝试执行以下操作以防止输入零并显示警告消息。我收到一条错误消息,指出“无法启动活动 calcResult”,这是显示计算的活动。

这是错误日志的链接:http://pastebin.com/hDsabjR6

据我了解,零值仍在通过验证,但我不知道为什么?

 String getoffsetlength = offsetLength.getText().toString(); 

 if (getoffsetlength.trim().equals('0')) {

     Toast.makeText(this, "Enter number greater than 0!", Toast.LENGTH_SHORT).show();
     return;
   }

当我在应用程序中使用此验证时应用程序崩溃。关于我在哪里搞砸了此实现的任何想法?

【问题讨论】:

  • 请您发布错误日志
  • 好的,我现在就发。
  • @BrianJ 你可以使用 if(getoffsetlength.trim().equalsIgnoreCase("0") 我也已经在下面发布了答案。
  • 为什么不把字符串转成int并检查是否等于0?

标签: android validation android-edittext


【解决方案1】:

只需将 android:digits="123456789" 添加到 XML 中的 EditText 即可。这样用户将无法输入0

[编辑]

但是,如果你想避免用户只在开头输入0,那么使用这个:

code_text.addTextChangedListener(new TextWatcher(){
            public void onTextChanged(CharSequence s, int start, int before, int count)
            {
                if (code_text.getText().toString().matches("^0") )
                {
                    // Not allowed
                    Toast.makeText(context, "not allowed", Toast.LENGTH_LONG).show();
                    code_text.setText("");
                }
            }
            @Override
            public void afterTextChanged(Editable arg0) { }
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
        }); 

【讨论】:

  • 如果用户想输入例如 "20" 会起作用。这会排除用户能够输入零的值吗?我的目标是允许用户输入除空白或 0 以外的任何数值
【解决方案2】:

试试这个

if(getoffsetlength.trim().equalsIgnoreCase("0"){
 Toast.makeText(this, "Enter number greater than 0!", Toast.LENGTH_SHORT).show();
 return;
}

【讨论】:

    【解决方案3】:

    你也可以使用下面的代码

            int PreviousLen;
            boolean keyDel; 
            etActLoginMobNo.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                mPreviousLen = s.length();
            }
    
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
    
            }
    
            @Override
            public void afterTextChanged(Editable s) {
                keyDel = mPreviousLen > s.length();
                if(!keyDel){
                    if (etActLoginMobNo.getText().toString().startsWith("0")) {
                        etActLoginMobNo.setText("");
                        Toast.makeText(context, R.string.enter_mobile_no_without_zero, Toast.LENGTH_SHORT).show();
                    }
                }
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多