前面我们已经完成了登录注册页面的布局,下面我们实现验证登录和记住密码的功能。
我们这里还没用到数据库,所以我们的验证的账号密码,是写死的。
首先进入登录页面,可以从这里跳转到注册页面,注册成功后,账号密码的输入框会自动获取刚刚注册的账号密码,无需再次输入。登录成功后,页面跳转到首页,首页获取并显示刚刚注册的账号,点击首页的退出登录,则返回到登录页面。
接下来,先写首页activity_main.xml页面的内容:
效果如图:
首页的MainActivity.java代码如下:
public class MainActivity extends AppCompatActivity {
private TextView tvContent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().setTitle("首页");
tvContent=findViewById(R.id.tv_content);
Intent intent=getIntent();
String account=intent.getStringExtra("account");
tvContent.setText("欢迎你:"+account);
}
//退出登录按钮点击事件
public void loginOut(View view) {
Intent intent=new Intent(this,LoginActivity.class);
startActivity(intent);
this.finish();
}
}
这里的代码是包含验证登录的内容和记住密码的内容。
首先是LoginActivity.java 页面:
public class LoginActivity extends AppCompatActivity {
public static final int REQUEST_CODE_REGISTER = 1;
private static final String TAG="tag";
private Button btnLogin;
private EditText etAccount,etPassword;
private CheckBox cbRemember;
private String userName="a";
private String pass="123";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
getSupportActionBar().setTitle("登录");
initView();
initData();
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//判断账号密码是否符合要求
String account=etAccount.getText().toString();
String password=etPassword.getText().toString();
if (TextUtils.isEmpty(userName)){
Toast.makeText(LoginActivity.this,"还没有注册账号!",Toast.LENGTH_LONG).show();
return;
}
if (TextUtils.equals(account,userName)){
if (TextUtils.equals(password,pass)){
Toast.makeText(LoginActivity.this,"恭喜你,登录成功!",Toast.LENGTH_LONG).show();
if (cbRemember.isChecked()){
SharedPreferences spf=getSharedPreferences("spfRecorid",MODE_PRIVATE);
SharedPreferences.Editor edit=spf.edit();
edit.putString("account",account);
edit.putString("password",password);
edit.putBoolean("isRemember",true);
edit.apply();
}else {
SharedPreferences spf=getSharedPreferences("spfRecorid",MODE_PRIVATE);
SharedPreferences.Editor edit=spf.edit();
edit.putBoolean("isRemember",false);
edit.apply();
}
//实现跳转
Intent intent=new Intent(LoginActivity.this,MainActivity.class);
//传递用户名
intent.putExtra("account",account);
startActivity(intent);
//接收自己
LoginActivity.this.finish();
}else {
Toast.makeText(LoginActivity.this,"密码错误!",Toast.LENGTH_LONG).show();
}
}else {
Toast.makeText(LoginActivity.this,"用户名错误",Toast.LENGTH_LONG).show();
}
}
});
}
//记住密码(取出数据)
private void initData() {
SharedPreferences spf=getSharedPreferences("spfRecorid",MODE_PRIVATE);
boolean isRemember=spf.getBoolean("isRemember",false);
String account=spf.getString("account","");
String password=spf.getString("password","");
//更新用户名密码(注册的用户名密码)
userName=account;
pass=password;
if (isRemember){
etAccount.setText(account);
etPassword.setText(password);
cbRemember.setChecked(true);
}
}
//初始化
private void initView(){
btnLogin=findViewById(R.id.btn_login);
etAccount=findViewById(R.id.et_account);
etPassword=findViewById(R.id.et_password);
cbRemember=findViewById(R.id.cb_remember);
}
//还没有账号(跳转到注册)
public void toRegister(View view) {
Intent intent=new Intent(this,RegisterActivity.class);
//startActivity(intent);
startActivityForResult(intent,REQUEST_CODE_REGISTER);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==REQUEST_CODE_REGISTER&&resultCode==RegisterActivity.RESULT_CODE_REGISTER&&data!=null){
Bundle extras=data.getExtras();
//获取用户密码
String account=extras.getString("account","");
String password=extras.getString("password","");
etAccount.setText(account);
etPassword.setText(password);
//更新用户名密码(注册的用户名密码)
userName=account;
pass=password;
}
}
}
接下来是RegisterActivity.java 页面的内容
public class RegisterActivity extends AppCompatActivity implements View.OnClickListener {
public static final int RESULT_CODE_REGISTER = 0;
private Button btnRegister;
private EditText etAccount,etPass,etPassConfirm;
private CheckBox cbAgree;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
getSupportActionBar().setTitle("注册");
etAccount=findViewById(R.id.et_account);
etPass=findViewById(R.id.et_password);
etPassConfirm=findViewById(R.id.et_password_Confirm);
cbAgree=findViewById(R.id.cb_agree);
btnRegister=findViewById(R.id.btn_register);
btnRegister.setOnClickListener(this);
}
@Override
public void onClick(View v) {
String name=etAccount.getText().toString();
String pass=etPass.getText().toString();
String PassConfirm=etPassConfirm.getText().toString();
if (TextUtils.isEmpty(name)){
Toast.makeText(RegisterActivity.this,"用户名不能为空!",Toast.LENGTH_LONG).show();
return;
}
if (TextUtils.isEmpty(pass)){
Toast.makeText(RegisterActivity.this,"密码不能为空!",Toast.LENGTH_LONG).show();
return;
}
if (!TextUtils.equals(pass,PassConfirm)){
Toast.makeText(RegisterActivity.this,"密码不一致!",Toast.LENGTH_LONG).show();
return;
}
if (!cbAgree.isChecked()){
Toast.makeText(RegisterActivity.this,"请同意用户协议!",Toast.LENGTH_LONG).show();
return;
}
//存储注册的用户名和密码
SharedPreferences spf=getSharedPreferences("spfRecorid",MODE_PRIVATE);
SharedPreferences.Editor edit = spf.edit();
edit.putString("account",name);
edit.putString("password",pass);
//注册成功后,回到登录页面,数据回传
Intent intent=new Intent();
Bundle bundle=new Bundle();
bundle.putString("account",name);
bundle.putString("password",pass);
intent.putExtras(bundle);
setResult(RESULT_CODE_REGISTER,intent);
Toast.makeText(RegisterActivity.this,"注册成功!",Toast.LENGTH_LONG).show();
this.finish();
}
}
到这里,验证登录和记住密码的功能就完成啦!恭喜你!
以上代码,都是我自己一个个码的,也运行过,运行结果是没问题的。当然如果你有什么意见建议,请不吝赐教❥(^_-)
具体源码分享在评论区,需要的小伙伴自取哦。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)