26. 设置模块(三)之修改密码

您所在的位置:网站首页 用户功能模块怎么设置 26. 设置模块(三)之修改密码

26. 设置模块(三)之修改密码

2024-07-09 09:13| 来源: 网络整理| 查看: 265

上一节对“我”模块(二)进行了综述(可参见 “我”模块(二) 进行了解),接下来将从设置模块开始详细介绍:

“我”模块(一)之收藏“我”模块(二)之设置“我”模块(三)之修改密码“我”模块(四)之设置密保 知识点 掌握“收藏”界面的开发,能够实现新闻收藏功能。掌握“设置”界面的开发,能够设置用户的基本信息。掌握“修改密码”界面的开发,能够实现密码的修改功能。掌握“设置密保”界面的开发, 能够实现密保的设置功能。 修改密码

任务综述:

“修改密码”界面主要用于保证用户信息安全性。修改密码需要输入一次原始密码和一次新密码,密码修改成功后需要把SharedPreferences中存储的旧密码修改成新密码。

8. “修改密码”界面

任务分析: “修改密码”界面主要是让用户在必要时修改自己的原始密码,从而保证用户信息的安全性,界面效果如图所示。

10186693-53eb804daab6c6f8.png image.png

任务实施: (1)创建“修改密码”界面:ModifyPswActivity & activity_modify_psw。

(2)放置界面控件。 2个EditText控件,分别用于输入原始密码与新密码, 1个Button控件作为“保存”按钮。

activity_modify_psw.xml

9. “修改密码”界面逻辑代码

任务分析: “修改密码”界面主要用于输入原始密码与新密码,输入的原始密码需要与从SharedPreferences中读取的原始密码一致,输入的新密码与原始密码不能相同。以上条件都符合之后,点击“保存”按钮将提示新密码设置成功,同时修改SharedPreferences中的原始密码。

任务实施: (1)获取界面控件。在ModifyPswActicity中创建界面控件的初始化方法init(),用于获取“修改密码”界面所要用到的控件以及设置后退键和“保存”按钮的点击事件。

(2)修改SharedPreferences中的原始密码。由于新密码设置成功时需要修改保存在SharedPreferences中的原始密码,因此需要创建modifyPsw()方法实现此功能。

ModifyPswActivity.java

public class ModifyPswActivity extends AppCompatActivity { private TextView tv_main_title, tv_back; private Button btn_save; private RelativeLayout rl_title_bar; private EditText et_original_psw, et_new_psw; private String originalPsw, newPsw; private String userName; private SwipeBackLayout layout; private ImageView iv_show_psw; private boolean isShowPsw = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); layout = (SwipeBackLayout) LayoutInflater.from(this).inflate( R.layout.base, null); layout.attachToActivity(this); setContentView(R.layout.activity_modify_psw); init(); userName = UtilsHelper.readLoginUserName(this); } /** * 获取界面控件并处理相关控件的点击事件 */ private void init() { tv_main_title = (TextView) findViewById(R.id.tv_main_title); tv_main_title.setText("修改密码"); tv_back = (TextView) findViewById(R.id.tv_back); tv_back.setVisibility(View.VISIBLE); rl_title_bar = (RelativeLayout) findViewById(R.id.title_bar); rl_title_bar.setBackgroundColor(getResources().getColor(R.color. rdTextColorPress)); et_original_psw = (EditText) findViewById(R.id.et_original_psw); et_new_psw = (EditText) findViewById(R.id.et_new_psw); iv_show_psw = (ImageView) findViewById(R.id.iv_show_psw); btn_save = (Button) findViewById(R.id.btn_save); tv_back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ModifyPswActivity.this.finish(); } }); iv_show_psw.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { newPsw = et_new_psw.getText().toString(); if (isShowPsw) { iv_show_psw.setImageResource(R.drawable.hide_psw_icon); //隐藏密码 et_new_psw.setTransformationMethod(PasswordTransformationMethod. getInstance()); isShowPsw = false; if (newPsw != null) { et_new_psw.setSelection(newPsw.length()); } } else { iv_show_psw.setImageResource(R.drawable.show_psw_icon); //显示密码 et_new_psw.setTransformationMethod(HideReturnsTransformationMethod. getInstance()); isShowPsw = true; if (newPsw != null) { et_new_psw.setSelection(newPsw.length()); } } } }); //保存按钮的点击事件 btn_save.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getEditString(); if (TextUtils.isEmpty(originalPsw)) { Toast.makeText(ModifyPswActivity.this, "请输入原始密码", Toast.LENGTH_SHORT).show(); return; } else if (!MD5Utils.md5(originalPsw).equals(readPsw())) { Toast.makeText(ModifyPswActivity.this, "输入的密码与原始密码不一致", Toast.LENGTH_SHORT).show(); return; } else if (MD5Utils.md5(newPsw).equals(readPsw())) { Toast.makeText(ModifyPswActivity.this, "输入的新密码与原始密码不能一致", Toast.LENGTH_SHORT).show(); return; } else if (TextUtils.isEmpty(newPsw)) { Toast.makeText(ModifyPswActivity.this, "请输入新密码", Toast.LENGTH_SHORT).show(); return; } else { Toast.makeText(ModifyPswActivity.this, "新密码设置成功", Toast.LENGTH_SHORT).show(); //修改登录成功时保存在SharedPreferences中的密码 modifyPsw(newPsw); Intent intent = new Intent(ModifyPswActivity.this, LoginActivity.class); startActivity(intent); SettingActivity.instance.finish(); //关闭设置界面 ModifyPswActivity.this.finish(); //关闭本界面 } } }); } /** * 获取控件上的字符串 */ private void getEditString() { originalPsw = et_original_psw.getText().toString().trim(); newPsw = et_new_psw.getText().toString().trim(); } /** * 修改登录成功时保存在SharedPreferences中的密码 */ private void modifyPsw(String newPsw) { String md5Psw = MD5Utils.md5(newPsw); //把密码用MD5加密 SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); //获取编辑器 editor.putString(userName, md5Psw); //保存新密码 editor.commit(); //提交修改 } /** * 从SharedPreferences中读取原始密码 */ private String readPsw() { SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE); String spPsw = sp.getString(userName, ""); return spPsw; } }

(3)修改清单文件。由于“修改密码”界面向右滑动会关闭该界面,因此需要给该界面添加透明主题的样式。

(4)修改“设置”界面逻辑代码。由于点击“设置”界面上的“修改密码”条目跳转到“修改密码”界面,需要找到SettingActivity中的init()方法,在该方法中的注释“//跳转到修改密码的界面”语句下方添加如下代码:

//修改密码的点击事件 rl_modify_psw.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //跳转到修改密码的界面 Intent intent = new Intent(SettingActivity.this, ModifyPswActivity.class); startActivity(intent); } });


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3