Github : Stepstone Material Stepper
有人用这个吗? 我只是想问一下,我在一个步骤中有超过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) {
}
答案 0 :(得分:0)
我想你已经得到了答案,但这就是我所做的:
在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("")
}