3 回答

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個贊
為了保存
SharedPreferences pref = getSharedPreferences("Name", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putBoolean("keyname",true);
editor.putString("keyname","string value");
editor.putInt("keyname","int value");
editor.putFloat("keyname","float value");
editor.putLong("keyname","long value");
editor.commit();
忘記
SharedPreferences pref = getSharedPreferences("Name", Context.MODE_PRIVATE);
pref.getString("keyname",null);
pref.getInt("keyname",0);
pref.getFloat("keyname",0);
pref.getBoolean("keyname",true);
pref.getLong("keyname",0);
對于單次刪除
SharedPreferences pref = getSharedPreferences("Name", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.remove("keyname");
editor.commit();
對于所有刪除
SharedPreferences pref = getSharedPreferences("Name", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.clear();
editor.commit();

TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個贊
要保存數(shù)據(jù),請使用以下代碼示例
name = NameEditText.getText().toString();
age = AgeEditText.getText().toString();
id = IDEditText.getText().toString();
SharedPreferences prefs = getSharedPreferences(
"com.example.myprofile", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("userName", name);
editor.putString("userAge", age);
editor.putString("userID", id);
editor.apply();
要檢索數(shù)據(jù),請使用以下代碼示例
SharedPreferences prefs = getSharedPreferences(
"com.example.myprofile", Context.MODE_PRIVATE);
name = prefs.getString("userName", "");
age = prefs.getString("userAge", "");
id = prefs.getString("userID", "");
之前的onCreate方法
String name;
String age;
String id;
解釋:
的第一個參數(shù)
getSharedPreferences
是你的包名,基本上是你代碼的第一行。你不需要創(chuàng)建多個
SharedPreferences
實(shí)例,一個就足夠了您不需要創(chuàng)建多個
SharedPreferences.Editor
實(shí)例,一個也足夠了。您可能不想使用隨機(jī)的
key
,例如用戶的用戶名來保存數(shù)據(jù),因?yàn)槟S后需要通過意圖將密鑰傳遞給其他活動,如果您要這樣做,為什么不發(fā)送用戶名而不是鑰匙?使用
editor.apply()
代替editor.commit()
onPause()
在 中保存和檢索數(shù)據(jù)是很常見的onResume()
,因此將它們聲明為全局會很有用,以避免編寫額外的代碼行。

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個贊
您正在使用特定字符串( getString(R.string.ProfileAge) ....)通過使用 commit() 或 apply() 以私有模式將數(shù)據(jù)保存在共享首選項(xiàng)中:-
SharedPreferences sharedPreferences1 = getSharedPreferences(getString(R.string.ProfileAge), Context.MODE_PRIVATE);
SharedPreferences sharedPreferences2 = getSharedPreferences(getString(R.string.ProfileID), Context.MODE_PRIVATE);
但是您并沒有嘗試在必須使用的私有模式下使用這些字符串獲取該數(shù)據(jù):-
SharedPreferences sharedPref = getSharedPreferences(getString(R.string.ProfileAge), Context.MODE_PRIVATE);
String name = sharedPref.getString("key", "defaultValue");
添加回答
舉報