android簡單功能之——用sharedPreferences實現記住使用者名稱和密碼
阿新 • • 發佈:2019-01-07
1.關於sharedPreferences:
SharedPreferences是Android系統中提供的一種使用鍵值對形式儲存資料的方式,特點是使用簡單方便,缺點是由於功能簡單,儲存的資料形式有限,只能用作簡單的資料儲存。
由於SharedPreferences是一個介面,而且在這個接口裡沒有提供寫入資料和讀取資料的能力。但它是通過其Editor介面中的一些方法來操作SharedPreference的,用法見下面程式碼:
Context.getSharedPreferences(String name,int mode)來得到一個SharedPreferences例項
name:是指檔名稱,不需要加字尾.xml,系統會自動為我們新增上。
mode:是指定讀寫方式,其值有三種,分別為:
Context.MODE_PRIVATE:指定該SharedPreferences資料只能被本應用程式讀、寫
Context.MODE_WORLD_READABLE:指定該SharedPreferences資料能被其他應用程式讀,但不能寫
Context.MODE_WORLD_WRITEABLE:指定該SharedPreferences資料能被其他應用程式讀寫。
2.使用方法:
- 直接宣告一個SharedPreferences物件
- 使用getSharedPreferences();方法獲取例項
- 使用SharedPreferences中的edit方法進行資料的編輯、新增、刪除和儲存。
3.使用時要注意的問題:
SharedPreferences物件本身只能讀取,而不能編輯、刪除和儲存,要操作資料必須使用edit方法。使用edit方法操作資料之後一定要使用Preferences中的edito.commit();方法提交,才能成功操作。SharedPreferences使用鍵值對的方式儲存資料,因此無法操作過於複雜的資料。小Demo程式碼實現:public class Login extends Activity { static String YES = "yes"; static String NO = "no"; private CheckBox checkBox1; private Button login; private EditText edtuser, edtpsd; static String name, password; private String isMemory = "";//isMemory變數用來判斷SharedPreferences有沒有資料,包括上面的YES和NO private String FILE = "saveUserNamePwd";//用於儲存SharedPreferences的檔案 private SharedPreferences sp = null;//宣告一個SharedPreferences protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); login = (Button) findViewById(R.id.login); edtuser = (EditText) findViewById(R.id.edtuser); edtpsd = (EditText) findViewById(R.id.edtpsd); checkBox1 = (CheckBox) findViewById(R.id.checkbox1); sp = getSharedPreferences(FILE, MODE_PRIVATE); isMemory = sp.getString("isMemory", NO); //進入介面時,這個if用來判斷SharedPreferences裡面name和password有沒有資料,有的話則直接打在EditText上面 if (isMemory.equals(YES)) { name = sp.getString("name", ""); password = sp.getString("password", ""); edtuser.setText(name); edtpsd.setText(password); } Editor editor = sp.edit(); editor.putString(name, edtuser.toString()); editor.putString(password, edtpsd.toString()); editor.commit(); //觸擊登入按鈕,執行remenber方法文字框裡的資訊重新寫入SharedPreferences裡面覆蓋之前的,去除掉勾選框,觸擊登入按鈕執行remenber方法就將之前儲存到SharedPreferences的資料清除了 login.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { name = edtuser.getText().toString(); password = edtpsd.getText().toString(); remenber(); Intent it=new Intent(Login.this, Message.class);//跳轉 startActivity(it); } }); } // remenber方法用於判斷是否記住密碼,checkBox1選中時,提取出EditText裡面的內容,放到SharedPreferences裡面的name和password中 public void remenber() { if (checkBox1.isChecked()) { if (sp == null) { sp = getSharedPreferences(FILE, MODE_PRIVATE); } Editor edit = sp.edit(); edit.putString("name", edtuser.getText().toString()); edit.putString("password", edtpsd.getText().toString()); edit.putString("isMemory", YES); edit.commit(); } else if (!checkBox1.isChecked()) { if (sp == null) { sp = getSharedPreferences(FILE, MODE_PRIVATE); } Editor edit = sp.edit(); edit.putString("isMemory", NO); edit.commit(); } }