安卓 實現記住使用者名稱和密碼功能
阿新 • • 發佈:2019-02-06
開發步驟:
- 在程式佈局中鍵入複選框
- 在LoginActivity類中加入登陸處理的方法
3.在 LoginActivity類中加入是否記住密碼的判斷方法
4.運用SharedPreferences進行使用者名稱和密碼的儲存
5.如果使用者名稱和密碼正確,會跳轉到歡迎介面
注意問題
- 要注意資料之間的轉換
- 複選框的不同狀態處理
- SharedPreferences的用法
- 頁面的正確跳轉
事件處理的主要程式碼
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
sp = this.getSharedPreferences("userdata", Context.MODE_WORLD_READABLE);
Username = (EditText) findViewById(R.id.etUsername);
Password = (EditText) findViewById(R.id.etPassword );
cbPW =(CheckBox) findViewById(R.id.cbPW);
btnLogin = (Button) findViewById(R.id.btnLogin);
if(sp.getBoolean("IsCheck",true)){
//設定預設是記錄密碼狀態
cbPW.setChecked(true);
Username.setText(sp.getString("UserName", ""));
Password.setText (sp.getString("Password", ""));
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void onClick(View view) {
UserNameValue = Username.getText().toString();
PasswordValue = Password.getText().toString();
if(UserNameValue.equals("admin")&&PasswordValue.equals("12345")){
Toast.makeText(LoginActivity.this,"登入成功", Toast.LENGTH_SHORT).show();
//登入成功和記住密碼框為選中狀態才儲存使用者資訊
if(cbPW.isChecked())
{
//記住使用者名稱、密碼、
Editor editor = sp.edit();
editor.putString("UserName", UserNameValue);
editor.putString("Password",PasswordValue);
editor.commit();
}
//跳轉介面
Intent intent = new Intent(LoginActivity.this,WelcomeAvtivity.class);
LoginActivity.this.startActivity(intent);
}else{
Toast.makeText(LoginActivity.this,"使用者名稱或密碼錯誤,請重新登入", Toast.LENGTH_LONG).show();
}
}
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
if (cbPW.isChecked()) {
System.out.println("記住密碼已選中");
sp.edit().putBoolean("IsCheck", true).commit();
}else {
System.out.println("記住密碼沒有選中");
sp.edit().putBoolean("IsCheck", false).commit();
}
}