You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

142 lines
5.2 KiB

package com.community.pocket.ui.register;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.annotation.Nullable;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import com.community.pocket.R;
import com.community.pocket.ui.BaseActivity;
import com.community.pocket.ui.listener.MyTextChange;
import com.community.pocket.ui.login.LoginActivity;
import com.community.pocket.ui.main.ui.share.Response;
import com.community.pocket.util.PropertiesUtil;
import org.xutils.view.annotation.ContentView;
import org.xutils.view.annotation.Event;
import org.xutils.view.annotation.ViewInject;
/**
* 注册界面
*/
@ContentView(R.layout.activity_register)
public class RegisterActivity extends BaseActivity {
private RegisterViewModel registerViewModel;
//用户名
@ViewInject(R.id.username)
private EditText username;
//密码
@ViewInject(R.id.password)
private EditText password;
//确认密码
@ViewInject(R.id.confirmPassword)
private EditText confirmPassword;
//手机号
@ViewInject(R.id.phone)
private EditText mobiePhone;
//邮箱
@ViewInject(R.id.email)
private EditText email;
//注册按钮
@ViewInject(R.id.register)
private Button registerButton;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
registerViewModel = new ViewModelProvider(this, new ViewModelProvider.NewInstanceFactory()).get(RegisterViewModel.class);
//监听注册表单校验状态
registerViewModel.getRegisterFormState().observe(this, new Observer<RegisterFormState>() {
@Override
public void onChanged(RegisterFormState registerFormState) {
if (registerFormState == null) {
return;
}
registerButton.setEnabled(registerFormState.isDataValid());
if (registerFormState.getUsernameError() != null) {
username.setError(getString(registerFormState.getUsernameError(), PropertiesUtil.getIntValue("username.length")));
}
if (registerFormState.getPasswordError() != null) {
password.setError(getString(registerFormState.getPasswordError(), PropertiesUtil.getIntValue("password.length")));
}
if (registerFormState.getConfirmPasswordError() != null) {
if (registerFormState.getConfirmPasswordError() == R.string.invalid_password) {
confirmPassword.setError(getString(registerFormState.getConfirmPasswordError(), PropertiesUtil.getIntValue("password.length")));
} else {
confirmPassword.setError(getString(registerFormState.getConfirmPasswordError()));
}
}
if (registerFormState.getPhoneError() != null) {
mobiePhone.setError(getString(registerFormState.getPhoneError()));
}
if (registerFormState.getEmailError() != null) {
email.setError(getString(registerFormState.getEmailError()));
}
}
});
TextWatcher afterTextChangedListener = new MyTextChange() {
@Override
public void afterTextChanged(Editable s) {
registerViewModel.registerDataChanged(username.getText().toString(),
password.getText().toString(), confirmPassword.getText().toString(), mobiePhone.getText().toString(), email.getText().toString());
}
};
username.addTextChangedListener(afterTextChangedListener);
password.addTextChangedListener(afterTextChangedListener);
confirmPassword.addTextChangedListener(afterTextChangedListener);
mobiePhone.addTextChangedListener(afterTextChangedListener);
email.addTextChangedListener(afterTextChangedListener);
//监听注册请求结果
registerViewModel.getRegisterResult().observe(this, new Observer<RegisterResponse>() {
@Override
public void onChanged(RegisterResponse registerResponse) {
if (registerResponse == null) {
return;
}
registerResponse.toast(getBaseContext());
if (registerResponse.getResult() == Response.Result.OK) {
startActivity(new Intent(getApplicationContext(), LoginActivity.class));
//Complete and destroy login activity once successful
finish();
}
setResult(Activity.RESULT_OK);
}
});
}
@Event(value = R.id.register)
private void register(View v) {
registerViewModel.register(username.getText().toString(), password.getText().toString(), mobiePhone.getText().toString(), email.getText().toString());
}
@Event(value = R.id.back)
private void back(View v) {
startActivity(new Intent(this, LoginActivity.class));
finish();
}
}