完成了设置部分接着完成设置中的第一个模块修改密码,建立 ModifyPswActivity ,修改布局为 LinearLayout java
具体代码以下:android
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/register_bg" android:orientation="vertical"> <include layout="@layout/main_title_bar" /> <EditText android:id="@+id/et_original_psw" android:layout_width="fill_parent" android:layout_height="48dp" android:layout_gravity="center_horizontal" android:layout_marginLeft="35dp" android:layout_marginRight="35dp" android:layout_marginTop="35dp" android:background="@drawable/register_user_name_bg" android:drawableLeft="@drawable/psw_icon" android:drawablePadding="10dp" android:gravity="center_vertical" android:hint="请输入原始密码" android:inputType="textPassword" android:paddingLeft="8dp" android:textColor="#000000" android:textColorHint="#a3a3a3" android:textSize="14sp" /> <EditText android:id="@+id/et_new_psw" android:layout_width="fill_parent" android:layout_height="48dp" android:layout_gravity="center_horizontal" android:layout_marginLeft="35dp" android:layout_marginRight="35dp" android:background="@drawable/register_psw_bg" android:drawableLeft="@drawable/psw_icon" android:drawablePadding="10dp" android:hint="请输入新密码" android:inputType="textPassword" android:paddingLeft="8dp" android:singleLine="true" android:textColor="#000000" android:textColorHint="#a3a3a3" android:textSize="14sp" /> <EditText android:id="@+id/et_new_psw_again" android:layout_width="fill_parent" android:layout_height="48dp" android:layout_gravity="center_horizontal" android:layout_marginLeft="35dp" android:layout_marginRight="35dp" android:background="@drawable/register_psw_again_bg" android:drawableLeft="@drawable/psw_icon" android:drawablePadding="10dp" android:hint="请再次输入新密码" android:inputType="textPassword" android:paddingLeft="8dp" android:singleLine="true" android:textColor="#000000" android:textColorHint="#a3a3a3" android:textSize="14sp" /> <Button android:id="@+id/btn_save" android:layout_width="fill_parent" android:layout_height="40dp" android:layout_gravity="center_horizontal" android:layout_marginLeft="35dp" android:layout_marginRight="35dp" android:layout_marginTop="15dp" android:background="@drawable/register_selector" android:text="保存" android:textColor="@android:color/white" android:textSize="18sp" /> </LinearLayout>
首先输入的原始密码与从 SharedPreferences 中读取的原始密码必须一致,输入的新密码与原始密码不能相同,再次输入的新密码与输入的新密码必须相同,以上条件都符合以后,点击保存修改 SharedPreferences 中的密码,修改密码后须要跳转到登陆页,同时须要关闭修改密码页及设置页,咱们须要在设置页的逻辑代码中新建一个 instance 对象,而后在建立设置页时给 instance 赋值 this ,再完成设置页的点击事件便可app
具体代码以下:编辑器
package cn.edu.lt.android.boxueguapp.activity; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.ActivityInfo; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import cn.edu.lt.android.boxueguapp.R; import cn.edu.lt.android.boxueguapp.utils.AnalysisUtils; import cn.edu.lt.android.boxueguapp.utils.MD5Utils; public class ModifyPswActivity extends AppCompatActivity { private TextView tv_main_title; private TextView tv_back; private EditText et_original_psw, et_new_psw, et_new_psw_again; private Button btn_save; private String originalPsw, newPsw, newPswAgain; private String userName; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_modify_psw); //设置此界面为竖屏 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); init(); userName = AnalysisUtils.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); et_original_psw = (EditText) findViewById(R.id.et_original_psw); et_new_psw = (EditText) findViewById(R.id.et_new_psw); et_new_psw_again = (EditText) findViewById(R.id.et_new_psw_again); btn_save = (Button) findViewById(R.id.btn_save); tv_back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ModifyPswActivity.this.finish(); } }); //保存按钮的点击事件 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 if (TextUtils.isEmpty(newPswAgain)) { Toast.makeText(ModifyPswActivity.this, "请再次输入新密码", Toast.LENGTH_SHORT).show(); return; } else if (!newPsw.equals(newPswAgain)) { 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(); newPswAgain = et_new_psw_again.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中读取原始密码 * 密码和用户名做为键值对保存到一块儿,因此经过用户名读取密码 * 用户名从AnalysisUtils工具类获取 */ private String readPsw() { SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE); String spPsw = sp.getString(userName, ""); return spPsw; } }
建立 instance 对象ide
public static SettingActivity instance;
在OnCreate方法中给 instance 赋值工具
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_setting); instance = this; init(); }
完成修改代码的点击事件布局
//修改密码的点击事件 rl_modify_psw.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(SettingActivity.this,ModifyPswActivity.class); startActivity(intent); } });