来自字符串的Android EditText setError()

时间:2016-03-10 02:19:58

标签: android android-edittext android-json

我知道我必须遗漏一些东西。我在错误时得到一个JSONObject。

{
   "data": {
      "status": "error",
      "error": {
          "email": ["Email already registered"]
      }
    }
}

JSON Key错误的名称与EditText相同。我需要能够

email.setError("Email already registered");

Class.forName()不适用于它......我如何在Android中执行此操作

该值位于Iterator key =“email”

} else if (data.getString("status").equals("error")) {
    Log.d(Constants.LOG, "No Account Found Sending to Register!");   
    JSONObject errors = data.getJSONObject("error");
    for(Iterator<String> iter = errors.keys();iter.hasNext();) {
        String key = iter.next();
        Object value = errors.get(key);
        Log.d(Constants.LOG,value.toString().replace("[","").replace("]","").replace("\"",""));
                                ///Class<?> clasz = Class.forName(key);
     }
     Toast.makeText(getApplicationContext(), "Error:" + data.getString("error"), Toast.LENGTH_LONG).show();
}

1 个答案:

答案 0 :(得分:1)

如果你有java 1.7或更高版本

,可能的方法是使用switch大小写作为字段名称
for(Iterator<String> iter = errors.keys();iter.hasNext();) {
    String key = iter.next();
    Object value = errors.get(key);
    Log.d(Constants.LOG,value.toString().replace("[","").replace("]","").replace("\"",""));
    switch(key) {
        case "email":
                    email.setError(value.toString());
                    break;
        case "name":
                    name.setError(value.toString());
                    break;
    }
 }

如果您不想使用switch案例,则可以使用Java Reflection API来实现相同目的。