package com.grassroots.booktracker.activity; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.ActivityInfo; import android.graphics.Color; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import com.grassroots.booktracker.R; import com.grassroots.booktracker.utils.MD5Utils; public class RegisterActivity extends AppCompatActivity { private TextView tv_main_title;//标题 private TextView tv_back;//返回按钮 private Button btn_register;//注册按钮 //用户名,密码,再次输入的密码的控件 private EditText et_user_name, et_psw, et_psw_again; //用户名,密码,再次输入的密码的控件的获取值 private String userName, psw, pswAgain; //标题布局 private RelativeLayout rl_title_bar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置页面布局 ,注册界面 setContentView(R.layout.activity_register); //设置此界面为竖屏 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); init(); } private void init() { //从main_title_bar.xml 页面布局中获取对应的UI控件 tv_main_title = findViewById(R.id.tv_main_title); tv_main_title.setText("注册"); tv_back = findViewById(R.id.tv_back); //布局根元素 rl_title_bar = findViewById(R.id.title_bar); rl_title_bar.setBackgroundColor(Color.TRANSPARENT); //从activity_register.xml 页面中获取对应的UI控件 btn_register = findViewById(R.id.btn_register); et_user_name = findViewById(R.id.et_user_name); et_psw = findViewById(R.id.et_psw); et_psw_again = findViewById(R.id.et_psw_again); tv_back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //返回键 RegisterActivity.this.finish(); } }); //注册按钮 btn_register.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //获取输入在相应控件中的字符串 getEditString(); //判断输入框内容 if (TextUtils.isEmpty(userName)) { Toast.makeText(RegisterActivity.this, "请输入用户名", Toast.LENGTH_SHORT).show(); } else if (TextUtils.isEmpty(psw)) { Toast.makeText(RegisterActivity.this, "请输入密码", Toast.LENGTH_SHORT).show(); } else if (TextUtils.isEmpty(pswAgain)) { Toast.makeText(RegisterActivity.this, "请再次输入密码", Toast.LENGTH_SHORT).show(); } else if (!psw.equals(pswAgain)) { Toast.makeText(RegisterActivity.this, "输入两次的密码不一样", Toast.LENGTH_SHORT).show(); /** *从SharedPreferences中读取输入的用户名,判断SharedPreferences中是否有此用户名 */ } else if (isExistUserName(userName)) { Toast.makeText(RegisterActivity.this, "此账户名已经存在", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_SHORT).show(); //把账号、密码和账号标识保存到sp里面 /** * 保存账号和密码到SharedPreferences中 */ saveRegisterInfo(userName, psw); //注册成功后把账号传递到LoginActivity.java中 // 返回值到loginActivity显示 Intent data = new Intent(); data.putExtra("userName", userName); setResult(RESULT_OK, data); //RESULT_OK为Activity系统常量,状态码为-1, // 表示此页面下的内容操作成功将data返回到上一页面,如果是用back返回过去的则不存在用setResult传递data值 RegisterActivity.this.finish(); } } }); } /** * 获取控件中的字符串 */ private void getEditString() { userName = et_user_name.getText().toString().trim(); psw = et_psw.getText().toString().trim(); pswAgain = et_psw_again.getText().toString().trim(); } /** * 从SharedPreferences中读取输入的用户名,判断SharedPreferences中是否有此用户名 */ private boolean isExistUserName(String userName) { boolean has_userName = false; //mode_private SharedPreferences sp = getSharedPreferences( ); // "loginInfo", MODE_PRIVATE SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE); //获取密码 String spPsw = sp.getString(userName, "");//传入用户名获取密码 //如果密码不为空则确实保存过这个用户名 if (!TextUtils.isEmpty(spPsw)) { has_userName = true; } return has_userName; } /** * 保存账号和密码到SharedPreferences中SharedPreferences */ private void saveRegisterInfo(String userName, String psw) { String md5Psw = MD5Utils.md5(psw);//把密码用MD5加密 //loginInfo表示文件名, mode_private SharedPreferences sp = getSharedPreferences( ); SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE); //获取编辑器, SharedPreferences.Editor editor -> sp.edit(); SharedPreferences.Editor editor = sp.edit(); //以用户名为key,密码为value保存在SharedPreferences中 //key,value,如键值对,editor.putString(用户名,密码); editor.putString(userName, md5Psw); //提交修改 editor.commit(); editor.commit(); } }