当前位置: 首页 > 知识库问答 >
问题:

如何在Android Material Stepper中验证表单?

严书
2023-03-14

我一直在使用https://github.com/stepstone-tech/android-material-stepper中的stepper库

我已经为步进器创建了碎片和适配器。它运行时没有错误。每个片段都有一些表单元素。

代码如下:

public class FragmentProfileBasic extends Fragment implements BlockingStep {

    EditText et_fname,et_lname,et_phone,et_address,et_city,et_state,et_profile_bio,et_dob;
    Spinner rel_status;
    RadioGroup radioGroup;
    RadioButton radioButton;
    String relStatus,gender,phone,address,city,state,profile_bio,dob;
    AwesomeValidation awVal;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_profile_basic, container, false);

        et_fname=v.findViewById(R.id.fname);
        et_lname=v.findViewById(R.id.lname);
        et_phone=v.findViewById(R.id.phone);
        //et_address=v.findViewById(R.id.address);
        et_city=v.findViewById(R.id.city);
        et_state=v.findViewById(R.id.state);
        et_profile_bio=v.findViewById(R.id.profile_bio);
        et_dob=v.findViewById(R.id.dob);
        radioGroup = v.findViewById(R.id.radio);

        awVal = new AwesomeValidation(ValidationStyle.BASIC);
        awVal.addValidation(getActivity(), R.id.fname, "[a-zA-Z\\s]+", R.string.fname_error);
        awVal.addValidation(getActivity(), R.id.phone, "[0-9]+", R.string.phone_error);
        awVal.addValidation(getActivity(), R.id.city, "[a-zA-Z\\s]+", R.string.city_error);
        awVal.addValidation(getActivity(), R.id.state, "[a-zA-Z\\s]+", R.string.state_error);
        awVal.addValidation(getActivity(), R.id.profile_bio, "[a-zA-Z0-9!#@.\\s]+", R.string.covertitle_error);
        //awVal.addValidation(this, R.id.profile_bio, "[a-zA-Z0-9!#@.\\s]+", R.string.bio_error);
        awVal.addValidation(getActivity(), R.id.dob, "[0-9/]+", R.string.dob_error);

        return v;
    }

    @Override
    public VerificationError verifyStep() {
        //return null if the user can go to the next step, create a new VerificationError instance otherwise
        return null;
    }

    @Override
    public void onSelected() {
        //update UI when selected
    }

    @Override
    public void onError(@NonNull VerificationError error) {
        //handle error inside of the fragment, e.g. show error on EditText
    }

    @Override
    public void onNextClicked(StepperLayout.OnNextClickedCallback callback) {
        if(awVal.validate()) {
            callback.goToNextStep();
        }
    }

    @Override
    public void onCompleteClicked(StepperLayout.OnCompleteClickedCallback callback) {
        callback.complete();
    }

    @Override
    public void onBackClicked(StepperLayout.OnBackClickedCallback callback) {

    }
}

共有1个答案

彭雨华
2023-03-14

我将通过检查编辑文本是否有文本来验证,然后您可以使用模板使用您自己的验证。如果您使用选项卡进行分步布局,则新的VerificationError将显示在选项卡顶部,并且图标将更改为error图标


@Nullable
@Override
public VerificationError verifyStep() {

               if (et_fname.getText().toString().trim().isEmpty()) {

                    et_fname.requestFocus();

                    return new VerificationError("First name has not been entered");

                } else if (et_lname.getText().toString().trim().isEmpty()) {

                    et_lname.requestFocus();

                    return new VerificationError("Last name has not been entered");


                } else if (et_phone.getText().toString().trim().isEmpty()) {

                    et_phone.requestFocus();

                    return new VerificationError("Phone number has not been entered");


                } else if (et_city.getText().toString().trim().isEmpty()) {

                    et_city.requestFocus();

                    return new VerificationError("City has not been entered");


                } else if (et_state.getText().toString().trim().isEmpty()) {

                    et_state.requestFocus();

                    return new VerificationError("State has not been entered");


                } else {

                      return null;
                }


        return new VerificationError("We encountered an error");

}
 类似资料:
  • 问题内容: 下面的代码对于执行基本的必需表单验证似乎效果很好。 当该字段是脏的+无效且为 Great 时,该表单将显示红色的 Name required 消息 。 如果该字段是脏的+有效消息。 但是,对于表单中的每个字段重复此代码是很混乱的: 我希望能够以更简单的方式指定和属性。 问题答案: 一种方法是将验证表达式抽象到范围方法: 控制者

  • 问题内容: HTML: 用于侦听输入[type = file]的自定义指令更改: 选择文件后,控制台中将显示以下错误: 错误:InvalidStateError:DOM异常11错误:试图使用一个不可用或不再可用的对象。 尝试使用plunkr:http ://plnkr.co/edit/C5j5e0JyMjt9vUopLDHc?p=preview 没有该指令,输入文件字段的状态将不会被推送到form

  • 当尝试验证表单(获取请求)时,我知道Result绑定,当尝试验证请求正文时,我也知道@Valid,但我不知道如何验证multipartForm Request参数。当我将json转换为对象时,我有一个带有请求参数的多部分表单,其中包含我的User.class.的json字符串表示形式, 如何检查user类中的参数是否满足要求,例如(电子邮件中有'@'或名字没有数字值)? 这是我的代码,控制器: 这

  • 我有一个简单的表单,需要验证输入的开头和结尾是否不是空格。 在HTML5中,我将这样做: 在新的Angular 2 ngControl指令中,验证模式的正确属性是什么?官方的Beta API在这个问题上仍然缺乏留档。

  • 问题内容: 有没有办法在不使用PHP的情况下检查变量是否为有效的JSON字符串?我没有PHP 5.3.3。 问题答案:

  • 本文向大家介绍如何使用jQuery验证表单?,包括了如何使用jQuery验证表单?的使用技巧和注意事项,需要的朋友参考一下 首先,您必须制作一个类似html的表单。 现在使用jQuery验证插件以更简单的方式验证表单的数据。 首先,在文件中添加jQuery库。 然后使用简单语法定义规则。 定义错误消息。 现在终于提交表格了。