如何获取 SharedPreferences android 的值
How to get value of SharedPreferences android
我正在尝试使用 SharedPreferences
我就是这样做的
public void StoreToshared(Object userData){
SharedPreferences mPrefs = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = mPrefs.edit();
Gson gson = new Gson();
String json = gson.toJson(userData);
Log.d("data", " Setup --> "+json);
prefsEditor.putString("userinfo", json);
prefsEditor.commit();
}
Log.d
结果是这样
Setup --> {"nameValuePairs":{"userData":{"nameValuePairs":{"phone":"089688xxxxxxx",
"username":"username of User","flag":1,"Email":"mymail@mail.com",
"tipe":"TP001","Deskripsi":"Ini tentang gua","user_id":"USER001",
"password":"c83e4046a7c5d3c4bf4c292e1e6ec681","fullname":My fullname"}},"status":"true"}}
然后我尝试检索它,在其他 activity 这就是我所做的
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences mPrefs = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = mPrefs.edit();
String data = mPrefs.getString("userinfo", null);
Log.i("Text", "Here is the retrieve");
Log.i("data", " retrieve --> "+data);
}
这是我如何打开我的另一个 activity
Intent intent = new Intent(Login.this, MainActivity.class);
startActivity(intent);
使用上面的脚本,logcat
的结果,我只看到上面的 Log.d
。所以我的问题是,我怎样才能找回它?
您需要使用 Gson 将字符串数据从 SharedPreferences
转换回 PoJo。只需这样做:
Object userData = new Gson().fromJson(data, Object.class);
我想应该可以解决问题。
尝试在您的 SharedPreferences
上添加一个密钥:
public void StoreToshared(Object userData){
SharedPreferences mPrefs = getSharedPreferences("your_sp_key", MODE_PRIVATE); //add key
SharedPreferences.Editor prefsEditor = mPrefs.edit();
Gson gson = new Gson();
String json = gson.toJson(userData);
Log.d("data", " Setup --> "+json);
prefsEditor.putString("userinfo", json);
prefsEditor.commit();
}
检索:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences mPrefs = getSharedPreferences("your_sp_key", MODE_PRIVATE); //add key
SharedPreferences.Editor prefsEditor = mPrefs.edit();
String data = mPrefs.getString("userinfo", null);
Log.i("Text", "Here is the retrieve");
Log.i("data", " retrieve --> "+data);
}
您可以创建 2 种方法:
// put value
public static void putPref(String key, String value, Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(key, value);
editor.commit();
}
和
// get value
public static String getPref(String key, Context context) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
return preferences.getString(key, null);
}
然后你可以输入值
putPref("userinfo", "/** user data json */", getApplicationContext());
并获取价值
String data = getPref("userinfo", getApplicationContext());
希望对您的问题有所帮助!
api:getPreferences 将使用 activity 名称创建 xml 文件(如果不存在)。例如,假设 StoreToshared 方法放在 activity: LoginActivity.java 中,它会创建一个文件:LoginActivity.xml 来存储你的 pref 数据。因此,当您进入其他 activity,假设其名称为:MainActivity.java,getPreferences 将查看文件 "MainActivity.xml" 而不是 "LoginActivity.xml",这就是您无法检索您的文件的原因数据.
解决方法是使用:getSharedPreferences。
因此,您的代码可以修改如下:
public void StoreToshared(Object userData) {
SharedPreferences mPrefs = getSharedPreferences("FILE_NAME",MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = mPrefs.edit();
Gson gson = new Gson();
String json = gson.toJson(userData);
Log.d("data", " Setup --> "+json);
prefsEditor.putString("userinfo", json);
prefsEditor.commit();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences mPrefs = getSharedPreferences("FILE_NAME",MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = mPrefs.edit();
String data = mPrefs.getString("userinfo", null);
Log.i("Text", "Here is the retrieve");
Log.i("data", " retrieve --> "+data);
}
希望对您有所帮助。
2020年,
Google 已发布新的数据存储,取代了共享首选项...
它是用“Kotlin”开发的
我正在尝试使用 SharedPreferences
我就是这样做的
public void StoreToshared(Object userData){
SharedPreferences mPrefs = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = mPrefs.edit();
Gson gson = new Gson();
String json = gson.toJson(userData);
Log.d("data", " Setup --> "+json);
prefsEditor.putString("userinfo", json);
prefsEditor.commit();
}
Log.d
结果是这样
Setup --> {"nameValuePairs":{"userData":{"nameValuePairs":{"phone":"089688xxxxxxx",
"username":"username of User","flag":1,"Email":"mymail@mail.com",
"tipe":"TP001","Deskripsi":"Ini tentang gua","user_id":"USER001",
"password":"c83e4046a7c5d3c4bf4c292e1e6ec681","fullname":My fullname"}},"status":"true"}}
然后我尝试检索它,在其他 activity 这就是我所做的
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences mPrefs = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = mPrefs.edit();
String data = mPrefs.getString("userinfo", null);
Log.i("Text", "Here is the retrieve");
Log.i("data", " retrieve --> "+data);
}
这是我如何打开我的另一个 activity
Intent intent = new Intent(Login.this, MainActivity.class);
startActivity(intent);
使用上面的脚本,logcat
的结果,我只看到上面的 Log.d
。所以我的问题是,我怎样才能找回它?
您需要使用 Gson 将字符串数据从 SharedPreferences
转换回 PoJo。只需这样做:
Object userData = new Gson().fromJson(data, Object.class);
我想应该可以解决问题。
尝试在您的 SharedPreferences
上添加一个密钥:
public void StoreToshared(Object userData){
SharedPreferences mPrefs = getSharedPreferences("your_sp_key", MODE_PRIVATE); //add key
SharedPreferences.Editor prefsEditor = mPrefs.edit();
Gson gson = new Gson();
String json = gson.toJson(userData);
Log.d("data", " Setup --> "+json);
prefsEditor.putString("userinfo", json);
prefsEditor.commit();
}
检索:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences mPrefs = getSharedPreferences("your_sp_key", MODE_PRIVATE); //add key
SharedPreferences.Editor prefsEditor = mPrefs.edit();
String data = mPrefs.getString("userinfo", null);
Log.i("Text", "Here is the retrieve");
Log.i("data", " retrieve --> "+data);
}
您可以创建 2 种方法:
// put value
public static void putPref(String key, String value, Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(key, value);
editor.commit();
}
和
// get value
public static String getPref(String key, Context context) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
return preferences.getString(key, null);
}
然后你可以输入值
putPref("userinfo", "/** user data json */", getApplicationContext());
并获取价值
String data = getPref("userinfo", getApplicationContext());
希望对您的问题有所帮助!
api:getPreferences 将使用 activity 名称创建 xml 文件(如果不存在)。例如,假设 StoreToshared 方法放在 activity: LoginActivity.java 中,它会创建一个文件:LoginActivity.xml 来存储你的 pref 数据。因此,当您进入其他 activity,假设其名称为:MainActivity.java,getPreferences 将查看文件 "MainActivity.xml" 而不是 "LoginActivity.xml",这就是您无法检索您的文件的原因数据.
解决方法是使用:getSharedPreferences。 因此,您的代码可以修改如下:
public void StoreToshared(Object userData) {
SharedPreferences mPrefs = getSharedPreferences("FILE_NAME",MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = mPrefs.edit();
Gson gson = new Gson();
String json = gson.toJson(userData);
Log.d("data", " Setup --> "+json);
prefsEditor.putString("userinfo", json);
prefsEditor.commit();
}
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences mPrefs = getSharedPreferences("FILE_NAME",MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = mPrefs.edit();
String data = mPrefs.getString("userinfo", null);
Log.i("Text", "Here is the retrieve");
Log.i("data", " retrieve --> "+data);
}
希望对您有所帮助。
2020年, Google 已发布新的数据存储,取代了共享首选项... 它是用“Kotlin”开发的