0

我的代码:

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 个检查。所以我只想知道是否有可能检查一个声明并找到哪个文件被留空。

谢谢你。

4

5 回答 5

5

将对象 (et1, 2, 3, ...) 存储在一个数组中,然后对其进行迭代。

于 2013-10-24T06:12:09.163 回答
1

您可以将 a 添加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());

在实际按键上验证它会更快,然后再进行检查。

于 2013-10-24T06:20:45.420 回答
1

将其存储在List

for (EditText et : etList) {
    if(!"".equals(et.getText().toString()))
}
于 2013-10-24T06:21:06.313 回答
0

我将实现表示必要控件的视图类(以模型-视图-控制器表示法),并使用多态性来避免这些 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() 方法并验证它自己的内容,而不会在外部显示特定的字段实现。如果字段验证失败,您只需停止并让用户更正字段内容。

于 2013-10-24T06:12:07.230 回答
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();
    }

}

祝你好运:)

于 2013-10-24T06:24:50.240 回答