【问题标题】:Adding more than one Constraint添加多个约束
【发布时间】:2017-07-03 08:53:03
【问题描述】:

我已经使用链接到 firebase 数据库的 android studio 创建了一个业务上传表单,我面临一个问题,我只能在 (name=empty display "please fill all fields") 上添加一个约束,但是我该如何添加这对每个其他 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();
    }
}

【问题讨论】:

  • 使用if ,else if
  • 检查下面的答案

标签: java android


【解决方案1】:

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

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

现在您可以迭代地图条目。如果您发现地图 value 为空,则可以发送一条消息(使用相应的地图键)。不漂亮,但比起来肯定更好

 if (!TextUtils.isEmpty(name)) {
  ...
 else if(!TextUtils.isEmpty(email)) {
  ...

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

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

【讨论】:

  • 谢谢,我会在那里做一些研究。
【解决方案2】:

方便用户:

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

TextWatcher

如果您检测到 EditText 为空,即在 onTextChanged() 您可以拨打editText.setError(yourString);

我建议使用AppCompatEditText 和包围TextInputLayout

但是,在提交之前,您必须再次为每个成员执行此操作。

要么你有一个更用户友好的方法和专门的错误,比如:

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 语句中的每个成员,然后 像您已经拥有的一样显示通用错误消息。

【讨论】:

  • 谢谢,会做的。
猜你喜欢
  • 1970-01-01
  • 2020-06-17
  • 1970-01-01
  • 2018-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多