我的代码:
if(!"".equals(et1.getText().toString())){
Toast.makeText(getActivity(), "Please enter text1", Toast.LENGTH_SHORT).show();
} else if(!"".equals(et2.getText().toString())){
Toast.makeText(getActivity(), "Please enter text2", Toast.LENGTH_SHORT).show();
} else if(!"".equals(et3.getText().toString())){
Toast.makeText(getActivity(), "Please enter text3", Toast.LENGTH_SHORT).show();
} else if(!"".equals(et4.getText().toString())){
Toast.makeText(getActivity(), "Please enter text4", Toast.LENGTH_SHORT).show();
} else if(!"".equals(et5.getText().toString())){
Toast.makeText(getActivity(), "Please enter text5", Toast.LENGTH_SHORT).show();
}
//总共13个字段,所以这将接近13检查。所以我想知道是否有可能检查一个陈述并找出哪个字段留空。
谢谢。
答案 0 :(得分:5)
将对象(et1,2,3,...)存储在一个数组中,然后迭代它。
答案 1 :(得分:1)
您可以在字段中添加textwatcher
。请参阅下面的代码段。
private class GenericTextWatcher implements TextWatcher {
private GenericTextWatcher() {
}
public void afterTextChanged(Editable editable) {
if(editable.toString().equals(""))
{
Toast.makeText(UrActivity.this, "ur toast", Toast.LENGTH_LONG).show();
}
}
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
}
然后注册textlistener
。
editext.addTextChangedListener(new GenericTextWatcher());
在实际按键上验证它会更快,然后再进行检查。
答案 2 :(得分:1)
将其存储在List
for (EditText et : etList) {
if(!"".equals(et.getText().toString()))
}
答案 3 :(得分:0)
我会实现代表必要控件的视图类(用Model-View-Controller表示法),并使用polymorphism来避免这些if语句。
<强>更新强>
据我所知,有一个输入验证机制。我会做以下几点。
我的解释可能比您预期的特定任务更为通用。但我认为它将来会对你有所帮助。请注意我不太熟悉Android API,因此您可能需要对我的某些Android API类(例如表示字段的类)的引用进行辅助。
所以,第一步。声明字段原型:
abstract FieldPrototype extends AndroidFieldClass {
/**
* Checks field contents and returns true if field is ok, otherwise shows popup validation message and returns false.
* @return see method description.
*/
public abstract boolean checkField();
}
class Et1Field extends FieldPrototype {
private String value;
public Et1Field() {
super();
// your initialization code here
}
public boolean checkField() {
if (value == null || "".equals(value)) {
// show validation message specific for Et1Field class instance.
return false;
}
return true;
}
}
// do the same steps for Et2Field .. Et13Field if those fields are different,
// and implement specific validation functionality for every kind of a field.
在您的屏幕类中,保留此屏幕上显示的所有字段的数组。在屏幕上的保存事件中,将save
事件发送到所有字段实例。
每个字段都将调用它自己的checkField()方法并验证它自己的内容,而不显示外部的特定字段实现。
如果字段验证失败,您只需停下来让用户更正字段内容。
答案 4 :(得分:0)
使一个函数检查空白并像这样调用一次......
checkBlank(et1.getText().toString()), 1);
checkBlank(et2.getText().toString()), 2);
checkBlank(et3.getText().toString()), 3);..and so on
这是功能..
private void checkBlank(String edt,int pos) {
// TODO Auto-generated method stub
if(edt.equals(""))
{
Toast.makeText(getApplicationContext(), "Please enter text"+pos, Toast.LENGTH_SHORT).show();
}
}
Godd Luck:)