如何在没有id的情况下动态添加EditText设置错误?

时间:2013-02-22 14:44:26

标签: android validation android-edittext

我在我的布局中动态添加了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("#########");

文字正确更改。为什么不显示错误?

2 个答案:

答案 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();
                        }
                    });