从另一个 activity android 获取 SharedPreferences
Get SharedPreferenes from another activity android
我正在尝试将我在两个不同活动中保存的 SharedPreferenes 获取到我的 SMS activity。它们都保存为字符串。
对于 phone 号码,它被保存为一个字符串,并且直接在 onActivityResult 内部(因为它正在从联系人列表中获取 phone 号码)
prefs = getSharedPreferences(prefName, MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
//---save the values in the EditText view to preferences---
editor.putString("phoneNumber", phn_no);
//---saves the values---
editor.commit();
phoneN.setText(phn_no);
Toast.makeText(getBaseContext(), "Saved",
Toast.LENGTH_SHORT).show();
对于消息,它有一个方法。
public void AddMessage() {
btnSave.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
prefs = getSharedPreferences(prefName, MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
//---save the values in the EditText view to preferences---
//editor.putInt("id", Integer.parseInt(e_id.getText().toString()));
editor.putString("message", editMessage.getText().toString());
//---saves the values---
editor.commit();
Toast.makeText(getBaseContext(), "Saved",
Toast.LENGTH_SHORT).show();
}
}
);
}
我试过这样做:
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
String phoneNum = settings.getString("phoneNumber", "");
String message = settings.getString("message", "");
Log.d(TAG, message.toString());
Log.d(TAG, phoneNum.toString());
但是这里没有保存。可能做错了...
在此先感谢您的帮助!
编辑
也试过这样做:
SharedPreferences spref = PreferenceManager.getDefaultSharedPreferences(this);
if (spref.contains("message")) {
String mes = spref.getString("message", "");
Log.d(TAG, mes)
; }
if(spref.contains("phoneNumber")){
String phn = spref.getString("phoneN", "");
Log.d(TAG,phn);
}
没用。日志中没有显示任何内容。
而不是这一行
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
使用
SharedPreferences settings = getSharedPreferences(prefName, MODE_PRIVATE);
在访问共享首选项时使用它而不是
PreferenceManager.getDefaultSharedPreferences(this);
// 使用这个
SharedPreferences settings = getSharedPreferences(prefName, MODE_PRIVATE);
您想在“首选项”中存储诸如...之类的内容。所以喜欢
首先创建 Common class like..
package com.ibl.commonClass;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.graphics.Bitmap;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.preference.PreferenceManager;
import android.view.View;
public class Global {
public SharedPreferences SharedPref;
Editor Editor;
Context context;
public Global(Context context) {
this.context = context;
SharedPref = this.context.getSharedPreferences("PREFS_NAME",
Context.MODE_PRIVATE);
}
public static void setPreferenceString(Context c, String pref, String val) {
Editor e = PreferenceManager.getDefaultSharedPreferences(c).edit();
e.putString(pref, val);
e.commit();
}
public static void setPreferenceInt(Context c, String pref, int val) {
Editor e = PreferenceManager.getDefaultSharedPreferences(c).edit();
e.putInt(pref, val);
e.commit();
}
public static void setPreferenceLong(Context c, String pref, Long val) {
Editor e = PreferenceManager.getDefaultSharedPreferences(c).edit();
e.putLong(pref, val);
e.commit();
}
public static void setPreferenceBoolean(Context c, String pref, Boolean val) {
Editor e = PreferenceManager.getDefaultSharedPreferences(c).edit();
e.putBoolean(pref, val);
e.commit();
}
public static void clearPreferenceUid(Context c, String pref) {
Editor e = PreferenceManager.getDefaultSharedPreferences(c).edit();
e.remove(pref);
e.commit();
}
public static boolean getPreferenceBoolean(Context c, String pref,
Boolean val) {
return PreferenceManager.getDefaultSharedPreferences(c).getBoolean(
pref, val);
}
public static int getPreferenceInt(Context c, String pref, int val) {
return PreferenceManager.getDefaultSharedPreferences(c).getInt(pref,
val);
}
public static Long getPreferenceLong(Context c, String pref, Long val) {
return PreferenceManager.getDefaultSharedPreferences(c).getLong(pref,
val);
}
public static String getPreferenceString(Context c, String pref, String val) {
return PreferenceManager.getDefaultSharedPreferences(c).getString(pref,
val);
}
}
现在您可以使用任何 activity 设置首选项,例如
String mEmail;
这是我在用户登录应用程序时得到的
mEmail = obj.getString("email");
Global.setPreferenceString(getApplicationContext(), "email",mEmail);
这样你就可以得到首选项
Global.getPreferenceString(getActivity(), "email", "");
在 Activity 中使用 "getApplicationContext()"
和片段“getActivity()
”
感谢和问候
似乎您遗漏了什么,我不知道是什么,但是请尝试将 SharedPreference 名称保存在常量文件中 并使其成为最终文件。因为您有可能将值保存在不同的 SharedPreference 中并从不同的中获取。例如:--
/*
**Declare SharedPreference name as a final
*/
public static final String PREFS_NAME = "MY_PREFS";
现在使用此变量从任何地方获取 SharedPreferences。例如:--
SharedPreferences prefs = context.getSharedPreference(PREFS_NAME, MODE_PRIVATE);
我正在尝试将我在两个不同活动中保存的 SharedPreferenes 获取到我的 SMS activity。它们都保存为字符串。
对于 phone 号码,它被保存为一个字符串,并且直接在 onActivityResult 内部(因为它正在从联系人列表中获取 phone 号码)
prefs = getSharedPreferences(prefName, MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
//---save the values in the EditText view to preferences---
editor.putString("phoneNumber", phn_no);
//---saves the values---
editor.commit();
phoneN.setText(phn_no);
Toast.makeText(getBaseContext(), "Saved",
Toast.LENGTH_SHORT).show();
对于消息,它有一个方法。
public void AddMessage() {
btnSave.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
prefs = getSharedPreferences(prefName, MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
//---save the values in the EditText view to preferences---
//editor.putInt("id", Integer.parseInt(e_id.getText().toString()));
editor.putString("message", editMessage.getText().toString());
//---saves the values---
editor.commit();
Toast.makeText(getBaseContext(), "Saved",
Toast.LENGTH_SHORT).show();
}
}
);
}
我试过这样做:
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
String phoneNum = settings.getString("phoneNumber", "");
String message = settings.getString("message", "");
Log.d(TAG, message.toString());
Log.d(TAG, phoneNum.toString());
但是这里没有保存。可能做错了...
在此先感谢您的帮助!
编辑
也试过这样做:
SharedPreferences spref = PreferenceManager.getDefaultSharedPreferences(this);
if (spref.contains("message")) {
String mes = spref.getString("message", "");
Log.d(TAG, mes)
; }
if(spref.contains("phoneNumber")){
String phn = spref.getString("phoneN", "");
Log.d(TAG,phn);
}
没用。日志中没有显示任何内容。
而不是这一行
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
使用
SharedPreferences settings = getSharedPreferences(prefName, MODE_PRIVATE);
在访问共享首选项时使用它而不是
PreferenceManager.getDefaultSharedPreferences(this);
// 使用这个
SharedPreferences settings = getSharedPreferences(prefName, MODE_PRIVATE);
您想在“首选项”中存储诸如...之类的内容。所以喜欢 首先创建 Common class like..
package com.ibl.commonClass;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.graphics.Bitmap;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.preference.PreferenceManager;
import android.view.View;
public class Global {
public SharedPreferences SharedPref;
Editor Editor;
Context context;
public Global(Context context) {
this.context = context;
SharedPref = this.context.getSharedPreferences("PREFS_NAME",
Context.MODE_PRIVATE);
}
public static void setPreferenceString(Context c, String pref, String val) {
Editor e = PreferenceManager.getDefaultSharedPreferences(c).edit();
e.putString(pref, val);
e.commit();
}
public static void setPreferenceInt(Context c, String pref, int val) {
Editor e = PreferenceManager.getDefaultSharedPreferences(c).edit();
e.putInt(pref, val);
e.commit();
}
public static void setPreferenceLong(Context c, String pref, Long val) {
Editor e = PreferenceManager.getDefaultSharedPreferences(c).edit();
e.putLong(pref, val);
e.commit();
}
public static void setPreferenceBoolean(Context c, String pref, Boolean val) {
Editor e = PreferenceManager.getDefaultSharedPreferences(c).edit();
e.putBoolean(pref, val);
e.commit();
}
public static void clearPreferenceUid(Context c, String pref) {
Editor e = PreferenceManager.getDefaultSharedPreferences(c).edit();
e.remove(pref);
e.commit();
}
public static boolean getPreferenceBoolean(Context c, String pref,
Boolean val) {
return PreferenceManager.getDefaultSharedPreferences(c).getBoolean(
pref, val);
}
public static int getPreferenceInt(Context c, String pref, int val) {
return PreferenceManager.getDefaultSharedPreferences(c).getInt(pref,
val);
}
public static Long getPreferenceLong(Context c, String pref, Long val) {
return PreferenceManager.getDefaultSharedPreferences(c).getLong(pref,
val);
}
public static String getPreferenceString(Context c, String pref, String val) {
return PreferenceManager.getDefaultSharedPreferences(c).getString(pref,
val);
}
}
现在您可以使用任何 activity 设置首选项,例如
String mEmail;
这是我在用户登录应用程序时得到的
mEmail = obj.getString("email");
Global.setPreferenceString(getApplicationContext(), "email",mEmail);
这样你就可以得到首选项
Global.getPreferenceString(getActivity(), "email", "");
在 Activity 中使用 "getApplicationContext()"
和片段“getActivity()
”
感谢和问候
似乎您遗漏了什么,我不知道是什么,但是请尝试将 SharedPreference 名称保存在常量文件中 并使其成为最终文件。因为您有可能将值保存在不同的 SharedPreference 中并从不同的中获取。例如:--
/*
**Declare SharedPreference name as a final
*/
public static final String PREFS_NAME = "MY_PREFS";
现在使用此变量从任何地方获取 SharedPreferences。例如:--
SharedPreferences prefs = context.getSharedPreference(PREFS_NAME, MODE_PRIVATE);