摘要:修改密碼界面思路完成了設置部分接著完成設置中的第一個模塊修改密碼,創建,修改布局為具體代碼如下請輸入原始密碼請輸入新密碼請再次輸入新密碼保存改密邏輯思路首先輸入的原始密碼與從中讀取的原始密碼必須一致,輸入的新密碼與原始密碼不能相同,再次輸
修改密碼界面 思路
完成了設置部分接著完成設置中的第一個模塊修改密碼,創建 ModifyPswActivity ,修改布局為 LinearLayout
具體代碼如下:
activity_modify_psw.xml改密邏輯 思路
首先輸入的原始密碼與從 SharedPreferences 中讀取的原始密碼必須一致,輸入的新密碼與原始密碼不能相同,再次輸入的新密碼與輸入的新密碼必須相同,以上條件都符合之后,點擊保存修改 SharedPreferences 中的密碼,修改密碼后需要跳轉到登錄頁,同時需要關閉修改密碼頁及設置頁,我們需要在設置頁的邏輯代碼中新建一個 instance 對象,然后在創建設置頁時給 instance 賦值 this ,再完成設置頁的點擊事件即可
具體代碼如下:
ModifyActivitypackage 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; } }SettingActivity
創建 instance 對象
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); } });運行效果
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68277.html
摘要:設置界面思路設置界面有三個功能,分別為修改密碼設置密保和退出登錄。 設置界面 思路 設置界面有三個功能,分別為修改密碼、設置密保和退出登錄。創建 SettingActivity ,修改布局為 LinearLayout 具體代碼如下: activity_setting.xml ...
摘要:設置密保找回密碼界面思路由于設置密保和找回密碼兩個界面十分相似,代碼邏輯也十分相似,因此這兩個界面可以使用同一個布局文件和同一個來處理,首先導入所需圖片資源文件,再創建,將布局改為具體代碼如下先將設置密保部分隱藏,您的用戶名是請輸 設置密保&找回密碼界面 思路 由于設置密保和找回密碼兩個界面十分相似,代碼邏輯也十分相似,因此這兩個界面可以使用同一個布局文件和同一個 Activity 來...
摘要:標題欄思路由于項目中大部分界面都有一個后退鍵和一個標題欄,為避免代碼冗雜以及便于利用,我們可以將后推薦和標題欄單獨抽取出來定義一個標題欄布局,在目錄下新建一個,選用具體代碼如下注冊界面思路將圖片導入目錄下,在包下創建,修改為布局具體代碼如 標題欄 思路 由于項目中大部分界面都有一個后退鍵和一個標題欄,為避免代碼冗雜以及便于利用,我們可以將后推薦和標題欄單獨抽取出來定義一個標題欄布局,在...
閱讀 2335·2021-11-15 11:38
閱讀 3544·2021-09-22 15:16
閱讀 1187·2021-09-10 11:11
閱讀 3156·2021-09-10 10:51
閱讀 2921·2019-08-30 15:56
閱讀 2774·2019-08-30 15:44
閱讀 3185·2019-08-28 18:28
閱讀 3525·2019-08-26 13:36