完成了設置部分接着完成設置中的第一個模塊修改密碼,建立 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); } });