Android 如何确保在textwatcher的edittext中只输入偶数?

Android 如何确保在textwatcher的edittext中只输入偶数?,android,Android,我只需要在textwatcher的edittext中输入偶数(范围:0-20)。然而,当我做了以下操作时,它仍然允许输入偶数和奇数。我希望当用户输入奇数时,显示toast。请引导我 甚至 @覆盖 公共无效后文本已更改(可编辑){ 试一试{ intv=Integer.parseInt(s.toString()); 如果(v%2!=0){ 如果(v>20){ s、 替换(0,s.length(),“”,0,2); }否则如果(v0&&v你的v&2!=0你是否试图使用模?v%2==0可能会给你一个你期

我只需要在textwatcher的edittext中输入偶数(范围:0-20)。然而,当我做了以下操作时,它仍然允许输入偶数和奇数。我希望当用户输入奇数时,显示toast。请引导我

甚至

@覆盖
公共无效后文本已更改(可编辑){
试一试{
intv=Integer.parseInt(s.toString());
如果(v%2!=0){
如果(v>20){
s、 替换(0,s.length(),“”,0,2);
}否则如果(v<0){
s、 替换(0,s.length(),“”,0,1);
}
}
}捕获(NumberFormatException ex)
{
Toast.makeText(MainActivity.this,“无效”,Toast.LENGTH_LONG.show();
}
}

当引发NumberFormatException异常时,您正在显示Toast,这意味着字符串不包含数字。 因此,当数字为偶数时,你也必须展示祝酒词,并且你将在其他条件下展示

if(v%2 != 0){
   //Number is odd
}else{
   //Number is even
}
尝试以下方法:

    @Override
    public void afterTextChanged(Editable s)
         try {
             int v = Integer.parseInt(s.toString());
             if(v>0 && v<20){
                   if(v%2 != 0){
                        Toast.makeText(getContext(), "ODD", Toast.LENGTH_SHORT).show();
                   }else{
                        Toast.makeText(getContext(), "EVEN", Toast.LENGTH_SHORT).show();
                   }
              }else{
                     Toast.makeText(getContext(), "OUT OF RANGE", Toast.LENGTH_SHORT).show();
             }
          }catch (NumberFormatException e){
                  Toast.makeText(getContext(), "INVALID", Toast.LENGTH_SHORT).show();
          }
        }
@覆盖
公共无效后文本已更改(可编辑)
试一试{
intv=Integer.parseInt(s.toString());

如果(v>0&&v你的
v&2!=0
你是否试图使用模?
v%2==0
可能会给你一个你期望的结果。抱歉,我编辑了这个问题。它仍然不起作用。:/任何其他解决方案。你有
v>20
?@KrisKrause:我的目标是输入0-20之间的任何偶数。第一部分很好:这是giv当我尝试输入大于20的数字时,请给我敬酒。但是,当我输入奇数时,它不会给我相同的敬酒。帮助您可以在包含范围的情况下编辑您的答案吗?谢谢。然后在if-else语句的每种情况下添加您的代码,以便对输入文本执行任何您想执行的操作。我尝试了,它部分起作用。我告诉我当我要输入数字14时,它已经在1处给了我toast。我希望它只在用户输入两个数字时才显示toast。你能帮我解决这个问题吗?当你的editText发生更改时,总是调用PostTextChanged。所以写一个2 dígits数字将调用它两次,每个数字一次。我想你必须这样做寻找一种不同的方法。可能是当它失去焦点时尝试验证它,或者绘制一条错误消息,而不是像使用InputExtLayout时那样显示祝酒词。可能会因为s.replace部件而出现错误?你能指导我吗?
    @Override
    public void afterTextChanged(Editable s)
         try {
             int v = Integer.parseInt(s.toString());
             if(v>0 && v<20){
                   if(v%2 != 0){
                        Toast.makeText(getContext(), "ODD", Toast.LENGTH_SHORT).show();
                   }else{
                        Toast.makeText(getContext(), "EVEN", Toast.LENGTH_SHORT).show();
                   }
              }else{
                     Toast.makeText(getContext(), "OUT OF RANGE", Toast.LENGTH_SHORT).show();
             }
          }catch (NumberFormatException e){
                  Toast.makeText(getContext(), "INVALID", Toast.LENGTH_SHORT).show();
          }
        }