需求:提交页面多个字段并验证
比如注册页面:
优化前:
protected boolean Check01() {
login_name=etLoginName.getText().toString().trim();
if (login_name != null && login_name.length()>0){
if(Verification.isName(login_name)){
mobile_number=etPhone.getText().toString().trim();
if (mobile_number !=null && mobile_number.length()>0){
if(Verification.isPhone(mobile_number, 11)){
name=etName.getText().toString().trim();
if (name !=null && name.length()>0){
if(Verification.isRealname(name)){
pwd = etPsw.getText().toString().trim();
pwd_again = etRepsw.getText().toString().trim();
if (pwd != null && pwd.length() > 0) {
// TODO
if (Verification.isPassword(pwd)) {
if (pwd_again != null && pwd_again.length() > 0) {
if (Verification.isPassword(pwd_again)) {
if (pwd.equals(pwd_again)) {
//第一步验证正确
} else {
Toast.makeText(act, "两次密码不相同",
Toast.LENGTH_SHORT).show();
}
} else {
AppUtil.showToast(act,
getString(R.string.login_pwd));
}
} else {
Toast.makeText(act, "请再次输入密码", Toast.LENGTH_SHORT)
.show();
}
} else {
AppUtil.showToast(act,
getString(R.string.login_pwd));
}
} else {
Toast.makeText(act, "请输入密码", Toast.LENGTH_SHORT).show();
}
}else{
AppUtil.showToast(act, getString(R.string.login_realname));
}
}else{
AppUtil.showToast(act, "请输入真实姓名");
}
}else{
AppUtil.showToast(act, "手机号码格式错误");
}
}else{
AppUtil.showToast(act, "请输入手机号码");
}
}else{
AppUtil.showToast(act, getString(R.string.login_name));
}
}else{
AppUtil.showToast(act , "请输入登录名" );
}
return true;
}
验证优化前:
public static boolean isName(String name) {
boolean b = false;
String str1 = "^[a-zA-Z]{1}[a-zA-Z0-9]{0,29}";
String str2 = "^[\u4e00-\u9fa5]+$";
if (name.matches(str1)) {
int length = name.length();
if (0 < length && length <= 30) {
b = true;
}
} else if (name.matches(str2)) {
int length = name.length();
if (0 < length && length <= 10) {
b = true;
}
}
return b;
}
优化:利用函数Exception,抛出异常
public void onClick(View v) {
Intent in = null;
switch (v.getId()) {
case R.id.btn_login://登录
if (AppUtil.isFastDoubleClick()) {
return;
}
try {
Verification.isNull(etAccount);
Verification.isNumeric(etAccount);
Verification.isNull(etPsw);
login();
} catch (VerificationException e) {
e.printStackTrace();
Toast.makeText(act, e.getMessage(), Toast.LENGTH_SHORT).show();
}
break;
case R.id.tv_regstaccount: //注册
in = new Intent(getActivity(), RegistrationActivity.class);
startActivity(in);
getActivity().finish();
break;
验证:
/**
*
* @param et
* @throws VerificationException
*/
public static void isNumeric(EditText et) throws VerificationException{
if(isNumeric(et.getText().toString())) {
throw new VerificationException(et.getHint() + "不能为纯数字");
}
验证异常函数
package com.xingoxing.util;
/**
* 验证异常
* @author lxs
* @date 2014-4-1
*/
public class VerificationException extends Exception {
private static final long serialVersionUID = 7985408493623643924L;
public VerificationException() {
super();
}
public VerificationException(String detailMessage) {
super(detailMessage);
}
}