[英]Shared preferences between classes (static)?
我有两个类,一个是LoginIn,另一个是User类。 在loginIn类中,我想显示用户登录时所做的共享首选项。
loginPrefs = getSharedPreferences("loginpreferences",Context.MODE_PRIVATE);
SharedPreferences.Editor loginEditor = loginPrefs.edit();
loginEditor.putString("userID", userIDCrypt);
loginEditor.commit();
现在我想在用户类中创建一个getID()方法,以便可以使用User.getID();从每个类中调用该方法。 我怎样才能做到这一点?
我需要在多个类中使用userID,因此我需要一项活动(例如称为getID)来提供用户ID。
做到这一点使您的共享偏好成为一类
public class Session {
private SharedPreferences prefs;
public Session(Context cntx) {
// TODO Auto-generated constructor stub
prefs = PreferenceManager.getDefaultSharedPreferences(cntx);
}
public void setusename(String usename) {
prefs.edit().putString("usename", usename).commit();
prefsCommit();
}
public String getusename() {
String usename = prefs.getString("usename","");
return usename;
}
}
现在在创建此类后,当您想使用这种用法时,像这样使对象和此类
private Session session;//global variable
session = new Session(cntx); //in oncreate
现在我们设置sharedpreference然后像这样使用
session.setusename("USERNAME");
现在,当您想获取用户名时,然后对会话对象进行相同的工作并调用此
session.getusename();
祝你好运:)密码相同
在一个活动中尝试一下:
SharedPreferences sp;
SharedPreferences.Editor edit;
sp = getSharedPreferences("enter", MODE_PRIVATE);
edit = sp.edit();
edit.putString("name", username);
edit.putString("pwd", password);
edit.commit();
在下一个活动中:
SharedPreferences sp = getSharedPreferences("enter", MODE_PRIVATE);
sp.getString("name", "default value"));
sp.getString("pwd", "default value"));
很抱歉,如果有任何语法或编译问题,请输入我的头,可能会出错。 因此,从本质上讲,这是一种方法,您可以使用它从一个简单的类公开自己的偏好,并从任何地方访问它。
public class MySharedPrefs {
public SharedPreferences sp;
public MySharedPrefs()
{
this.sp = c.getSharedPreferences("prefs", Context.MODE_PRIVATE);
}
public static String getStringFieldValue(Context c, String fieldName)
{
MySharedPrefs p = new MySharedPrefs(c);
return p.sp.getString(fieldName, "default value");
}
public static void setStringValue(Context c, String fieldName, String value)
{
MySharedPrefs p = new MySharedPrefs(c);
SharedPreferences.Editor edit;
edit = p.sp.edit();
edit.putString(fieldName, value);
edit.commit();
}
}
然后在您的活动中像这样使用它:
MySharedPrefs.getStringFieldValue(this, "name");
您也可以在此类上进行扩展,并添加其他帮助方法,例如getUserName
或类似方法。
更新:
从另一个静态类调用此函数时,该类需要引用您的应用程序上下文,然后需要将该上下文提供给该函数,而不是使用它。
MySharedPrefs.getStringFieldValue(context, "name"); //if your other static class has a property called context that contains your applications context
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.