程序中包含两个页面:LoginActivity 和 MainActivity,启动页面为LoginActivity。已知LoginActivity中包含一个EditText(id为et_name),供用户输入登录账号;一个CheckBox(id为cb_save),供用户勾选是否保存账号选项;一个Button(id为btn_login),显示文字为“登录”。
请根据以下要求编写程序:
-
启动程序后,先判断用户账号是否已保存,若账号已保存(将其从文件加载到页面中的文本框中),则直接进入MainActivity页面。
-
若用户账号未保存,则进入LoginActivity页面,用户输入账号后,单击“登录”按钮时,若账号为空,则用Toast提示用户“账号不能为空!”。
- 若“保存账号”处于选中状态,则将用户账号使用SharedPreferences存储到文件”data.xml”中(使用内部存储存储到文件user.data中),并跳转到MainActivity页面。
- 若“保存账号”处于未选中状态,则不保存用户账号信息,直接跳转到MainActivity页面。
请在下面写出问题 1 的处理逻辑:
EditText etName = findViewById(R.id.et_name);
Button btnLogin = findViewById(R.id.btn_login);
CheckBox cbSave= findViewById(R.id.cb_save);
SharedPreferences sp = this.getSharedPreferences("data",MODE_PRIVATE);
String account= sp.getString("account","");//获取保存的账号
if(data == null) {
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(intent);
}
//把账号设置到文本框里
etName.setText(account);
cbSave.setChecked(true);//设置选中
请在下面写出问题 2 的处理逻辑:
EditText etName = findViewById(R.id.et_name);
Button btnLogin = findViewById(R.id.btn_login);
CheckBox cbSave= findViewById(R.id.cb_save);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(v.getId == R.id.btn_login){
//点击了登录按钮
//判断账号是否输入
String account = etName.getText().toString().trim();
if (TextUtils.isEmpty(account)){
//没输入代码提示:账号不能为空!
Toast.makeText(this, "账号不能为空!", Toast.LENGTH_SHORT).show();
return;
}
//选中保存的话,数据保存到文件
if(cbSave.isChecked()) {
SharedPreferences sp = context.getSharedPreferences("data",Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sp.edit();
edit.putString("account", account);
edit.commit();
}
//否则直接跳转到主页面
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
}});