我在我的布局中动态添加了EditTexts。他们没有身份证。这个EditTexts都是必需的,不能留空。我有这个功能用于验证:
private boolean validate() {
boolean valid = true;
for (int i = 0; i < layout.getChildCount(); i++) {
if (layout.getChildAt(i).getTag() != null && layout.getChildAt(i).getTag().toString().contains("required")) {
String viewClass = layout.getChildAt(i).getClass().getName();
if (viewClass.contains("EditText")) {
EditText et = (EditText) layout.getChildAt(i);
if (et.getText().toString().trim().isEmpty()) {
Log.d("#########", "EDIT TEXT ERROR");
et.setError("This field is required.", getResources().getDrawable(R.drawable.indicator_input_error));
valid = false;
}
}
}
}
}
其中layout
是包含EditTexts的布局。它给了我日志,但它没有显示错误。如果我用
setError
行
et.setText("#########");
文字正确更改。为什么不显示错误?
答案 0 :(得分:0)
这是另一个错误。问题中的代码工作正常。
答案 1 :(得分:0)
private boolean validate() {
boolean valid = false;
System.out.println("getChildCount:"+ll.getChildCount());
Log.d(TAG,"*****************1******************");
for (int i = 0; i < ll.getChildCount(); i++) {
if (ll.getChildAt(i).getTag() != null && ll.getChildAt(i).getTag().toString().contains("required")) {
Log.d(TAG,"*****************2******************");
String viewClass = ll.getChildAt(i).getClass().getName();
if (viewClass.contains("EditText")) {
Log.d(TAG,"*****************3******************");
EditText et = (EditText) ll.getChildAt(i);
if (et.getText().toString().trim().isEmpty()) {
Log.d(TAG,"*****************4******************");
Log.d("#########", "EDIT TEXT ERROR");
Utils.showAlertDialog(activity, "Error", "The fields are required",getResources().getDrawable(R.mipmap.ic_error), new DialogInterface.OnClickListener() {
@Override`enter code here`
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
valid = true;
}else{
Log.d(TAG,"**********else*******1******************");
valid = false;
}
}else{
Log.d(TAG,"********else*********2******************");
valid = false;
}
}else{
Log.d(TAG,"*********else********3******************");
valid = false;
}
}
return valid;
}
并尝试致电
if(validate()) {
Log.d(TAG,"********validate()*********1******************");
SaveRecords();
}else{
Log.d(TAG,"**********else*******1******************");
Utils.showAlertDialog(activity, "Error", "The fields are required",getResources().getDrawable(R.mipmap.ic_error), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});