添加多个约束

时间:2017-07-03 08:53:04

标签: java android

我使用链接到firebase数据库的android studio创建了一个业务上传表单,我面临一个问题,我只能在(name =空显示"请填写所有字段")上添加约束,但我如何将其添加到每个其他EditText字段,所以当用户没有填写所有消息显示。 这是代码

private void addBusiness(){

  String  name = businame.getText().toString().trim();
  String  email = busiemail.getText().toString().trim();
  String  number = businum.getText().toString().trim();
  String  address = busiadd.getText().toString().trim();
  String  info = busiinfo.getText().toString().trim();
  String  type = spinnerType.getSelectedItem().toString();

    if (!TextUtils.isEmpty(name)) {
      String id= databaseBusiness.push().getKey();
      Business business = new Business(id, name, email, number, address, info, type);
      databaseBusiness.child(id).setValue(business);
      Toast.makeText(this,"Upload Done", Toast.LENGTH_LONG).show();
    } else {
        Toast.makeText(this,"Please Fill All Fields",Toast.LENGTH_LONG).show();
    }
}

2 个答案:

答案 0 :(得分:1)

一个简单的解决方案可能如下所示:

Map<String, String> userInputByTag = new HashMap<>();
userInputByTag.put("name", businame.getText().toString().trim());
userInputByTag.put("email", busiemail.getText().toString().trim());
...

现在您可以迭代地图条目。如果您发现地图为空,则可以发出消息(使用相应的地图密钥)。不是很漂亮,但与

相比肯定更好
 if (!TextUtils.isEmpty(name)) {
  ...
 else if(!TextUtils.isEmpty(email)) {
  ...

换句话说:直接但丑陋的解决方案将是if / else if / ...语句的级联。

除此之外 - 我很确定Android有一些框架支持字段验证。你应该在那里做一些研究,而不是重新发明轮子。开始阅读heretherethat

答案 1 :(得分:1)

方便用户:

我会为用户使用更方便的方式,并在EditText中直接显示错误,如果它是空的,每次使用TextWatcher EditText

TextWatcher

如果您检测到EditText为空,即在onTextChanged()中 你可以致电editText.setError(yourString);

我建议将AppCompatEditTextTextInputLayout包围。

但是,在提交之前,你必须再次为每个成员做这件事。

您可以采用更加用户友好的方式处理专门的错误,例如:

if (TextUtils.isEmpty(name)) {

//dedicated error message
return;
}

if (TextUtils.isEmpty(email )) {
//dedicated error message 
return;
}

//and so on

(...)
//if every field holds the correct information
databaseBusiness.child(id).setValue(business);
(...)

或者您可以在一个if语句中检查每个成员 显示您已经拥有的一般错误消息。