1

我有一个动态添加的 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("#########");

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

4

2 回答 2

1

这是另一个错误。问题中的代码工作正常。

于 2013-05-09T07:01:34.713 回答
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();
                        }
                    });
于 2017-10-24T06:03:46.367 回答