当前位置: 首页 > 知识库问答 >
问题:

如何防止用户输入零作为输入?

尉迟冯浩
2023-03-14

我正在尝试将输入验证添加到一组三个 EditTexts 中,用户在其中输入数值。我面临的问题是,为了使计算正常工作,用户无法输入零作为输入字段之一,否则应用程序将崩溃。

我尝试实现以下操作以防止输入零并显示警告消息。我收到一条错误消息,指出“无法启动活动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;
   }

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

共有3个答案

太叔逸春
2023-03-14
匿名用户

您可以通过< code>Kotlin中的< code > EditText < code > doOnTextChanged 监听器来接收

editText.doOnTextChanged { text, _, _, _ ->
       if(text?.length == 2 && text.get(0).toString() == "0") {
            setText("0")
            setSelection(1)
         }
   }

孙朗
2023-03-14

试试这个吧

if(getoffsetlength.trim().equalsIgnoreCase("0"){
 Toast.makeText(this, "Enter number greater than 0!", Toast.LENGTH_SHORT).show();
 return;
}
长孙和悦
2023-03-14

只需将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) {}
        }); 

 类似资料:
  • null 所以我面临一个问题,如果打开,等待输入,如何停止它?我尝试过将它放在线程中并或使用作为标志,但它并没有停止

  • 我试图获取代码,以防止用户输入中包含数字。 基本上,我希望代码如下所示: 请求输入 关键是(为什么这不是一个重复的问题):我不能使用循环或其他我们还没有学会的语句。到目前为止,我们所学的唯一真正的语句是if/else/else if语句。这意味着我不能像一些答案所建议的那样使用for循环。虽然它们是很好的答案,而且很有效,但我会因为使用它们而失分。 我已经有了这个,但我不知道如何测试输入是否只包含

  • 我有一个蓝牙条形码扫描仪附在Android平板电脑上。硬件键盘在Android设置中被禁用。这让我既可以扫描条形码,又可以使用软键盘打字。 当我扫描条形码时,我的活动按预期捕获所有键。但是软键盘出现了。 但什么都没起作用。当应用程序按下硬件键时,软键盘就会出现。

  • 问题内容: 我正在尝试保存要分析的歌曲信息,但是如果该歌曲已经存在于分析中,我希望我的代码什么也不做。 我在下面尝试过此代码: 上面的代码在日志中给出以下结果: 成功取得4分。歌曲已存在成功检索到4个乐谱。歌曲已存在成功检索到4个乐谱。歌曲已存在成功检索到4个乐谱。歌曲已存在成功成功成功成功成功成功成功成功成功成功成功成功 为什么我的for循环比Objects.count循环更多?以及如何防止解析

  • 我想在html表单中将用户输入限制为正数。 我知道您可以设置min=“0”,但是可以通过手动输入负数绕过此设置。 有没有其他方法可以解决这个问题而不用编写验证函数?

  • 我想做的是:打开大文件的InputStream,读取10MB的块,上传一个块,读取下一个块。 我为这个任务编写了很好的代码,但问题是ContentResolver返回ParcelFileDescriptor。AutoCloseInputStream作为InputStriam。这个实现打破了InputStream的契约,因为它在first.read()之后自动关闭,所以当我尝试读取下一个块时,我得到