1. 程式人生 > >android用SharedPreferences實現登入時記住密碼功能

android用SharedPreferences實現登入時記住密碼功能

import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;/**
* 實現記住密碼功能
*/public class MainActivity extends AppCompatActivity {
private Button btn;//登入按鈕
private CheckBox checkBox;//是否儲存密碼的選擇框
private EditText edit_name, edit_psd;//使用者名稱和密碼的文字輸入框
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login
);
initView();
}
/**
* 初始化資料
*/private void initView() {
btn = (Button) findViewById(R.id.btn_login);
checkBox = (CheckBox) findViewById(R.id.istrue);
edit_name = (EditText) findViewById(R.id.name);
edit_psd = (EditText) findViewById(R.id.password);
output();//剛進入就先取一次,看看當然狀態
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//隨便設定初始帳號和密碼分別為 "abc" 和 "123456"
if (edit_name.getText().toString().equals("abc") && edit_psd.getText().toString().equals("123456")) {
input();//登入成功就把資料存起來
Intent intent = new Intent(MainActivity.this, SuccessActivity.class);
startActivity(intent);
finish();
} else {
Toast.makeText(MainActivity.this, "使用者名稱或密碼錯誤", Toast.LENGTH_SHORT).show();
}
}
});
}
/**
* 取
*/private void output() {
//第一個引數是檔名,第二個引數是模式(不明白可以去補習一下SharedPreferences的知識)
SharedPreferences shared = getSharedPreferences("mypsd", MODE_PRIVATE);
//第一個引數就是關鍵字,第二個引數為預設值,意思是說如果沒找到值就用預設值代替
String name1 = shared.getString("name", "");//同上,若沒找到就讓它為空""
String psd1 = shared.getString("psd", "");
boolean ischecked1 = shared.getBoolean("isChecked", false);
edit_name.setText(name1);
edit_psd.setText(psd1);
checkBox.setChecked(ischecked1);
}
/**
* 存
*/private void input() {
//第一個引數是檔名,第二個引數是模式(不明白可以去補習一下SharedPreferences的知識)
SharedPreferences.Editor edit = getSharedPreferences("mypsd", MODE_PRIVATE).edit();
//判斷選擇框的狀態 被選中isChecked或……
if (checkBox.isChecked()) {
edit.putString("name", edit_name.getText().toString());
edit.putString("psd", edit_psd.getText().toString());
edit.putBoolean("isChecked", true);
} else {
// edit.clear(); //若選擇全部清除就保留這行程式碼,註釋以下三行
edit.putString("name", edit_name.getText().toString());//只存使用者名稱
edit.putString("psd", "");
edit.putBoolean("isChecked", false);
}
edit.commit();
}
}