package com.jiuqi.njt.register; import com.jiuqi.mobile.nigo.comeclose.bean.base.UserBean; import com.jiuqi.njt.R; import com.jiuqi.njt.receiver.SMSReceiver; import com.jiuqi.njt.receiver.SMSReceiver.GetNjtSms; import com.jiuqi.njt.register.VerificationAccountTask.GetVerificationUser; import com.jiuqi.njt.util.ReturnObject; import com.jiuqi.njt.util.TitleBarUtil; import com.jiuqi.njt.util.ValidateRule; import com.jiuqi.njt.util.Validator; import com.jiuqi.util.UIUtil; import android.app.Activity; import android.content.IntentFilter; import android.os.Bundle; import android.view.View; import android.view.View.OnFocusChangeListener; import android.view.ViewStub; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; /** * 新的用户注册页面(其他方式注册) * @author joe * */ public class NewRegisterByOther extends Activity implements OnClickListener { private EditText phoneNumber; private EditText verificationCode; private Button sendVerificationCode; private Button nextStep; private TextView introduce; private EditText userAccount; private EditText userPass; private UserBean userBean; private String vercode; private SMSReceiver smsReceiver; private boolean weatherSendYZMClick; @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(smsReceiver); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); doinit(); } private void doinit() { initParam(); initWidgets(); initListeners(); initUI(); } private void initParam() { IntentFilter filter1 = new IntentFilter(); filter1.addAction(SMSReceiver.SMSACTION); smsReceiver = new SMSReceiver(new GetSMS()); // 注册Receiver registerReceiver(smsReceiver,filter1); } private void initWidgets() { setContentView(R.layout.register_new_byother); ViewStub rlTitleBar = (ViewStub) findViewById(R.id.titleBarStub); TitleBarUtil.createTitleBar(this, rlTitleBar, "用户注册", new OnClickListener() { @Override public void onClick(View v) { NewRegisterByOther.this.finish(); } }); userAccount = (EditText) findViewById(R.id.otherRegister_Edit_userAccount); userPass = (EditText) findViewById(R.id.otherRegister_Edit_userPass); phoneNumber = (EditText) findViewById(R.id.otherRegister_Edit_phoneNumber); verificationCode = (EditText) findViewById(R.id.otherRegister_Edit_VerificationCode); sendVerificationCode = (Button) findViewById(R.id.otherRegister_Btn_sendVerificationCode); nextStep = (Button) findViewById(R.id.otherRegister_Btn_nextStep); introduce = (TextView) findViewById(R.id.otherRegister_Tv_introduce); } private void initListeners() { sendVerificationCode.setOnClickListener(this); nextStep.setOnClickListener(this); /** * 焦点变化时触发监听,判断输入的账号是不是已经存在 */ userAccount.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if(!hasFocus){ if(validatorAccount()){ new VerificationAccountTask(NewRegisterByOther.this, userAccount.getText().toString(), new GetUserBean()).execute(); } } } }); } /** * 获取短信内容 * @author joe * */ private class GetSMS implements GetNjtSms{ @Override public void returnSmsData(String smsData) { //清除验证码内容,并把最新的验证码设置到页面上 verificationCode.setText(""); verificationCode.setText(smsData); } } /** * 获取验证后的用户信息 * @author joe * */ private class GetUserBean implements GetVerificationUser{ @Override public void getUserBean(UserBean result) { userBean =result; } } private void initUI() { } /** * 验证用户输入的账号格式是不是正确 * @return */ private boolean validatorAccount(){ Validator validator = null; ReturnObject ro = null; validator = new Validator(); validator.addRules(ValidateRule.IS_VALID_PASSWORD); TextView[] widgets = new TextView[] { userAccount }; for (TextView w : widgets) { ro = validator.val(w.getText()); if (!ro.isSuccess) { UIUtil.showMsg(NewRegisterByOther.this, ro.getErrorMessage().replace("密码", "账号")); return false; } } return true; } /** * 检查页面的组件中是不是有数据,格式是不是正确 * @return */ private boolean checkParams() { String toastMsg = ""; TextView[] widgets = new TextView[] {userAccount, userPass,phoneNumber, verificationCode }; Validator validator = null; ReturnObject ro = null; // 验证这些控件是不是都有内容了 validator = new Validator(); validator.addRules(ValidateRule.IS_NOT_EMPTY, ValidateRule.IS_REACH_MAX_LENGTH); for (TextView w : widgets) { ro = validator.val(w.getText()); if (!ro.isSuccess) { toastMsg = w.getHint().toString(); w.requestFocus(); UIUtil.showMsg(NewRegisterByOther.this, toastMsg); return false; } } // 验证这些控件是不是都是纯数字 validator.clearRules(); validator.addRules(ValidateRule.IS_DIGITS_ONLY); widgets = new TextView[] { phoneNumber ,verificationCode}; for (TextView w : widgets) { ro = validator.val(w.getText()); if (!ro.isSuccess) { UIUtil.showMsg(this, ro.getErrorMessage()); toastMsg = ro.getErrorMessage(); w.requestFocus(); UIUtil.showMsg(NewRegisterByOther.this, toastMsg); return false; } } validator.clearRules(); validator.addRules(ValidateRule.IS_VALID_PASSWORD); widgets = new TextView[] { userAccount }; for (TextView w : widgets) { ro = validator.val(w.getText()); if (!ro.isSuccess) { UIUtil.showMsg(this, ro.getErrorMessage()); toastMsg = ro.getErrorMessage(); w.requestFocus(); UIUtil.showMsg(NewRegisterByOther.this, toastMsg); return false; } } if(!weatherSendYZMClick){ UIUtil.showMsg(NewRegisterByOther.this, "请点击发送验证码按钮"); return false; } return true; } @Override public void onClick(View v) { // TODO Auto-generated method stub String account = phoneNumber.getText().toString(); switch (v.getId()) { case R.id.otherRegister_Btn_sendVerificationCode: if(validatorAccount()&&RegisterUtils.validatorIsPhoneNumber(NewRegisterByOther.this,new TextView[]{phoneNumber})){ if(null==userBean){ new SendVerificationTask(NewRegisterByOther.this, account, new Counter(120000, 1000, sendVerificationCode),new AllTaskInterface() { @Override public <T> void taskFinishReturn(T... result) { weatherSendYZMClick = true; } }).execute(); }else{ UIUtil.showMsg(NewRegisterByOther.this, "该账号已经被注册"); } } break; case R.id.otherRegister_Btn_nextStep: if(checkParams()){ if(null==userBean){ String mobileNumber = account; account = userAccount.getText().toString(); String password = userPass.getText().toString(); vercode = verificationCode.getText().toString(); new RegisterTask(NewRegisterByOther.this, account, password, mobileNumber, vercode, new AllTaskInterface() { @Override public <T> void taskFinishReturn(T... result) { // TODO Auto-generated method stub RegisterUtils.judgeRegisterMethods(NewRegisterByOther.this, result, userBean,true); } }).execute(); }else{ UIUtil.showMsg(NewRegisterByOther.this, "该账号已经被注册"); } } break; default: break; } } }