標籤:find err 模式 apply 模型 開啟 預設 應用 儲存資料
有很多的應用都會有儲存密碼和帳號的功能,比如QQ。接下來就講講使用SharedPreferences來儲存密碼和帳號,也許有些人會考慮的資料庫,但是我個人認為對於儲存簡單的資料,使用的資料庫就大材小用了,SharedPreferences比較輕量級
首先寫好布局,只有兩個輸入框和一個按鈕
<EditText android:id="@+id/number" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="number" /> <EditText android:id="@+id/password" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textPassword" /> <Button android:id="@+id/save" android:text="儲存" android:layout_width="match_parent" android:layout_height="wrap_content" />
擷取取控制項
private EditText number; private EditText password; private Button save; number = (EditText) findViewById(R.id.number); password = (EditText) findViewById(R.id.password); save = (Button) findViewById(R.id.save);
在擷取控制項之後,還要擷取SharedPreferences,第一參數為儲存的檔案名稱,第二個為儲存的模型,當檔案存在就讀取,如果不存在就建立
private SharedPreferences sp;
//第一參數為儲存的檔案名稱,第二個為儲存的模型,當檔案存在就讀取,如果不存在就建立sp = getSharedPreferences("info",MODE_PRIVATE);
增加按鈕點擊事件,點擊按鈕儲存帳號和密碼
save.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //擷取輸入框的帳號和密碼 String numberStr = number.getText().toString().trim(); String passwordStr = password.getText().toString().trim(); //判斷是否為空白 if (numberStr.isEmpty() || passwordStr.isEmpty()){ Toast.makeText(getApplicationContext(),"帳號或密碼不可為空",Toast.LENGTH_SHORT).show(); }else { //擷取Editor SharedPreferences.Editor editor = sp.edit(); //輸入內容 editor.putString("number",numberStr); editor.putString("password",passwordStr); //必須提交才會生效,也可以使用apply editor.commit(); Toast.makeText(getApplicationContext(),"儲存成功",Toast.LENGTH_SHORT).show(); } } });
當我們儲存帳號和密碼後,想要在第二次開啟應用時直接寫密碼和帳號,還有在載入頁面時擷取資料
//擷取info檔案的內容,第一參數為儲存時的key,第二個是如果擷取不到的預設值 String numberStr1 = sp.getString("number",""); String passwordStr2 = sp.getString("password",""); number.setText(numberStr1); password.setText(passwordStr2);
這個info.xml的檔案儲存在data/data/包名/shared_prefs/info.xml,可以看到是以XML格式儲存的
最後再來理一理整個思路
儲存
①通過getSharedPreferences("檔案名稱",模式)獲得SharedPreferences
②通過sp.edit()擷取Editor
③使用editor調用putXXX(key,value)儲存資料
④使用editor調用apply()或者commit()才會生效
讀取
①通過getSharedPreferences("檔案名稱",模式)獲得SharedPreferences
②通過sp.getXXX(key,defValue)直接可以獲得資料
Android使用SharedPreferences儲存帳號密碼