Stepstone – 材料步进器

Github:Stepstone材料步进器

任何人使用这个? 我只想问,我在一个步骤里面有4个以上的Edittexts,每个都有验证方法。 我只想知道在我的活动中应该在哪里调用这些错误捕获方法?

我的验证方法的例子在这里:

class VerifyAppNameTask extends AsyncTask<String, Void, String> { // use doInBackground() to make network calls, the returned value is // sent to onPostExecute() @Override protected String doInBackground(String... data) { if (data[0].replace(" ","").isEmpty()) { f1 = true; return "1"; } else if (data[0].length() > 25) { f1 = true; return "2"; } else if (checkAppName(data[0])) { f1 = true; return "3"; } else { f1 = false; return "4"; } } @Override protected void onPostExecute(String result) { tilAppName.setErrorEnabled(true); switch(result) { case "1": {tilAppName.setError("You can't leave this empty.");break;} case "2": {tilAppName.setError("Maximum of 25 characters.");break;} case "3": {tilAppName.setError("No spaces allowed");break;} case "4": {tilAppName.setError(null);tilAppName.setErrorEnabled(false);break;} } } } 

另一个是这个

 public boolean edtAppCategoryET(String data) { tilAppCategory.setErrorEnabled(true); if (data.replace(" ","").equals("")) { tilAppCategory.setError("You can't leave this empty."); return true; } else { tilAppCategory.setError(""); tilAppCategory.setErrorEnabled(false); return false; } } 

这是步进的代码

 public class AppUploadStep1 extends Fragment implements Step { private static final String LAYOUT_RESOURCE_ID_ARG_KEY = "messageResourceId"; EditText edtAppName, edtAppVersion, edtAppPlatform, edtAppCategory, edtAppDescription; TextInputLayout tilAppName, tilAppVersion, tilAppPlatform, tilAppCategory, tilAppDescription; String sAppName, sAppVersion, sAppPlatform, sAppCategory, sAppDescription; boolean f1, f2, f3, f4, f5; HttpURLConnection connection; BufferedReader reader; URL url; InputStream stream; StringBuffer buffer; String line; ProgressBar loading; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View v = inflater.inflate(R.layout.content_app_upload_step1, container, false); getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); //initialize your UI edtAppPlatform = (EditText) v.findViewById(R.id.edtAppPlatform); edtAppVersion = (EditText) v.findViewById(R.id.edtAppVersion); edtAppCategory = (EditText) v.findViewById(R.id.edtAppCategory); edtAppDescription = (EditText) v.findViewById(R.id.edtAppDescription); edtAppName = (EditText) v.findViewById(R.id.edtAppName); tilAppName = (TextInputLayout) v.findViewById(R.id.tilAppName); tilAppVersion = (TextInputLayout) v.findViewById(R.id.tilAppVersion); tilAppPlatform = (TextInputLayout) v.findViewById(R.id.tilAppPlatform); tilAppCategory = (TextInputLayout) v.findViewById(R.id.tilAppCategory); tilAppDescription = (TextInputLayout) v.findViewById(R.id.tilAppDescription); edtAppPlatform.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { showCustomSpinnerDialog(v, R.array.spinner_platform, R.id.edtAppPlatform); } }); edtAppCategory.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { showCustomSpinnerDialog(v, R.array.categories, R.id.edtAppCategory); } }); errorTrap(); return v; } public static AppUploadStep1 newInstance(@LayoutRes int layoutResId) { Bundle args = new Bundle(); args.putInt(LAYOUT_RESOURCE_ID_ARG_KEY, layoutResId); AppUploadStep1 fragment = new AppUploadStep1(); fragment.setArguments(args); return fragment; } @Override public VerificationError verifyStep() { // getData(); //if (edtAppVersionET(sAppVersion)) { // return true // ?new VerificationError("Password cannot be empty") // :null; return null; } @Override public void onSelected() { } @Override public void onError(@NonNull VerificationError error) { } 

我想你已经得到了答案,但这是我做的:

在verifystep方法中检查你的edittext的条件,并在最后返回VerificationError(“”)(它在kotlin中)

 if(editText?.text?.toString().isNullOrEmpty()){ editText?.setError("this field is required") editText?.addTextChangedListener(object : TextWatcher { override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) { editText?.setError("this field is required") } override fun afterTextChanged(s: Editable) { editText?.setError(null) } }) return VerificationError("") }