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.
153 lines
5.7 KiB
153 lines
5.7 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 android.widget.Toast;
|
|
|
|
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.login.LoginActivity;
|
|
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 RegisterViewModelFactory()).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 TextWatcher() {
|
|
@Override
|
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
|
// ignore
|
|
}
|
|
|
|
@Override
|
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
|
// ignore
|
|
}
|
|
|
|
@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<RegisterResult>() {
|
|
@Override
|
|
public void onChanged(RegisterResult registerResult) {
|
|
if (registerResult == null) {
|
|
return;
|
|
}
|
|
|
|
if (registerResult.getError() != null) {
|
|
Toast.makeText(getApplicationContext(), R.string.register_fail, Toast.LENGTH_SHORT).show();
|
|
}
|
|
if (registerResult.getSuccess() != null) {
|
|
Toast.makeText(getApplicationContext(), R.string.register_ok, Toast.LENGTH_SHORT).show();
|
|
}
|
|
|
|
setResult(Activity.RESULT_OK);
|
|
|
|
startActivity(new Intent(getApplicationContext(), LoginActivity.class));
|
|
//Complete and destroy login activity once successful
|
|
finish();
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
@Event(value = R.id.register)
|
|
private void register(View v) {
|
|
registerViewModel.register(username.getText().toString(), password.getText().toString(), confirmPassword.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();
|
|
}
|
|
}
|
|
|