类之间的共享偏好(静态)?

时间:2013-12-12 12:33:14

标签: java android eclipse login sharedpreferences

我有两个类,一个是loggedIn,另一个是User类。在loggedIn类中,我想显示用户登录时创建的共享首选项。

loginPrefs = getSharedPreferences("loginpreferences",Context.MODE_PRIVATE);
SharedPreferences.Editor loginEditor = loginPrefs.edit();
loginEditor.putString("userID", userIDCrypt);
loginEditor.commit();

现在我想在用户类中创建一个getID()方法,我可以使用User.getID();从每个类调用该方法。我怎么能这样做?

我需要多个类中的userID,所以我想要一个给我用户ID的活动(例如叫做getID)。

3 个答案:

答案 0 :(得分:1)

这样做为共享偏好设定一个课程

       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;
        }
}

现在在制作这个课程之后你想要像这样使用这个用法 使对象og这个类像

  private Session session;//global variable 
session = new Session(cntx); //in oncreate 

现在我们设置了共享首选项,然后像

一样使用它
session.setusename("USERNAME");

现在,当你想要获得用户名时,会话对象的工作相同,并调用此

 session.getusename();

祝你好运:)密码相同

答案 1 :(得分:1)

在一个活动中试试这个:

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"));

答案 2 :(得分:0)

很抱歉,如果有任何语法或编译问题,只需输入我的头脑,并可能会犯一些错误。所以从本质上讲,这是一种可以用来从一个简单的类中公开你的prefs并从任何地方访问它的方法。

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