2011-05-11 51 views
4

我需要实现edittext字段,该字段只允许用户输入20到60.如果用户输入超出范围的数字,将会显示一个对话框并强制用户再次输入。Android - 如何触发edittext字段的验证

所以文Watcher是没有用的,因为它不能防止用户输入一个数字,低于20

的onFocusChangedListener既不是,如果用户点击“完成”按钮,在EditText上不失去焦点,所以触发器不会触发。

此外,edittext位于标签视图内,因此当用户单击另一个标签时,触发器会触发,但用户无法再为该edittext输入值。

如果您对此有任何意见,请与我分享。

非常感谢。

回答

1

如何使用onTextChanged跟踪EditText字段?

+1

+1你的回答是正确的。我添加了一个简单的代码片段。 – 2011-05-11 19:06:28

+0

请确保您处理删除键被按下,而'EditText'为空:http://stackoverflow.com/a/13983097/832776 – 2012-12-21 01:34:38

1

使用这些

android:maxLength="2" android:numeric="integer" 

然后当你喜欢的号码:number.gettext()让你喜欢的验证,如果数量> 60,下那么20,你可以做number.setHint("number no valid");

+0

谢谢subspider,但问题是如何触发验证 – thanhbinh84 2011-05-12 07:26:35

2

阿尔文是正确的。 ..这是我的代码,一旦进入文本做一些事情,但可以有一个很容易的验证序列:

smsMsgBody_editText.addTextChangedListener(new TextWatcher() { 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     // Do something fancy 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { } 
    public void afterTextChanged(Editable s) { } 
}); 
+0

@Alvin然后,@ Jaydeep Khamar。正如我在我的问题中提到的那样,文本观察器对于用户输入低于20的情况没有用。例如当用户输入8并单击'完成'按钮或移动到另一个选项卡时,文本观察者不能帮助,右? – thanhbinh84 2011-05-12 07:32:16

+0

你可以绝对使用上面的代码来进行验证。您也可以通过向onClick()添加方法调用来为“完成”按钮添加方法调用,或者为tabHost.setOnTabChangedListener添加方法调用(新的OnTabChangeListener()){public void onTabChanged(String tabId){ doValidation(); }}); – 2011-05-12 12:44:08

+0

目前,我这样做,但是,有更多的项目周围,如操作栏,菜单栏,所以我需要把我的验证里面那些不那么好的项目...我正在寻找更好的解决方案如果有的话。 – thanhbinh84 2011-05-13 02:26:14