【问题标题】:Checking empty textEdit检查空文本编辑
【发布时间】:2015-07-13 18:53:39
【问题描述】:

我正在尝试编写一个简单的注册应用程序,用户必须填写一些字段,其中一些字段是强制性的。所以,我需要检查用户是否在那里写信息。我正在这样做:

    for(RequireFields r : RequireFields.values()){
        if(boolValue()){
            switch (r.getField()) {
                case "name":
                    System.out.println("Name");
                    break;
                case "surname":
                    System.out.println("Surname");
                    break;
                case "pass":
                    System.out.println("Pass");
                    break;
                case "email":
                    System.out.println("Email");
                    break;
                case "street":
                    System.out.println("Street");
                    break;
                case "city":
                    System.out.println("City");
                    break;
                case "zip":
                    System.out.println("Zip");
                    break;
            }
        }
    }

其中boolValue()返回TextUtils.isEmpty(Field)的状态,但是这部分我不知道怎么做,RequireFileds暂时是一个枚举:

public enum RequireFields {
    NAME("name",1),
    SURNAME("surname",2),
    EMAIL("email",3),
    PASS("pass",4),
    CITY("city",5),
    STREET("street",6),
    ZIP("zip",7);

    private final String field;
    private final int position;

    RequireFields(String field, int position) {
        this.field = field;
        this.position = position;
    }

    public String getField() {
        return field;
    }

    public int getPosition() {
        return position;
    }

}

我在名字上放了一个数字,所以我可以使用迭代。 有什么想法或简单的方法吗?

PD:这是我在其他应用中使用的两个字段的代码:

    ssid.setError(null);
    pass.setError(null);

    String SSID = ssid.getText().toString();
    String PASS = pass.getText().toString();

    boolean cancel = false;
    View focusView = null;

    if (TextUtils.isEmpty(PASS) && !openWifi) {
        pass.setError(getString(R.string.error_field_pass));
        focusView = pass;
        cancel = true;
    }

    if (TextUtils.isEmpty(SSID)) {
        ssid.setError(getString(R.string.error_field_ssid));
        focusView = ssid;
        cancel = true;
    }

【问题讨论】:

    标签: java android registration textutils


    【解决方案1】:

    我这样做是为了检查空的 EditText...

    if (editTextName.getText().toString().equalsIgnoreCase("")) 
    {
          // show message/toast for empty name
    } 
    else if (editTextSurname.getText().toString().equalsIgnoreCase("")) 
    {
         // show message/toast for empty Surname
    } 
    else if (editTextEmail.getText().toString().equalsIgnoreCase(""))  
    {
         // show message/toast for empty Email
    }
    else 
    {
         // If above all conditions are false means all fields are not empty so put your action here 
    }
    

    希望对您有所帮助..

    【讨论】:

    • 是的,但我想在不使用太多“if else if”的情况下做到这一点......我有 7 个 editText,这是最好的方法吗?
    • 看你必须检查每个EditText是否为空,所以至少有一次你必须检查每个editText,所以在我看来可能更好。如果您发现更好,请分享。
    【解决方案2】:

    我没有抓住你想要的东西。下面是我用过的

  • 将以下代码添加到您的 requireFields
        private static final SparseArray< RequireFields > _map=new SparseArray< RequireFields >();
    static {
        for (RequireFields cmd: RequireFields.values())
        {
            _map.put(cmd.position,cmd);
        }
    }
    public static RequireFields valueOf(int value) { 
      RequireFields field = _map.get(value);
      if (field==null) {
        Log.d("RequireFields","RequireFields position "+value+" not found");
      }
      return field; 
      }
    

  • 然后你可以使用 switch 像
    switch(RequireFields.valueOf(value){
        case NAME:
            .......    // your handler
            break;
        case SURNAME:
            ....
    }
    

    希望对你有所帮助

  • 【讨论】:

      猜你喜欢
      • 2013-05-22
      • 2020-08-17
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      • 2012-01-05
      • 2011-07-02
      • 2021-12-05
      • 2015-09-03
      相关资源
      最近更新 更多