SharedPreferences提交和回滚

时间:2013-09-10 16:00:07

标签: android settings sharedpreferences commit rollback

以下是提交和回滚SharedPreferences以及一般使用它的预期/合理方法吗?

public class Settings {

private static final String PREFS_NAME = "Settings";
private static SharedPreferences preferences = null;
private static SharedPreferences.Editor editor = null;

public static void init(Context context) {
    // Activity or Service what ever starts first provides the Context
    if (preferences == null)
        // getSharedPreference because getPreferences is a method of Activity only (not Service or Context)
        preferences = context.getSharedPreferences(PREFS_NAME, 0);
        editor = preferences.edit();
}

public static String getEmail() {
    return preferences.getString("email", null);
}

public static void setEmail(String email) {
    editor.putString("email", email);
}

public static String getPassword() {
    return preferences.getString("password", null);
}

public static void setPassword(String password) {
    editor.putString("password", password);
}

public static void save() {
    editor.commit();
}

public static void rollback() {
    editor = preferences.edit();
}

}

这是由stackoverflow编辑器强制执行的更详细信息。我真的不知道还有什么可以说的。

非常感谢专家的反馈。如果可以剪断是合理的,它可以更好地解释我在这里找到的所有其他线程。

1 个答案:

答案 0 :(得分:0)

根据我的理解,以下方法只有一处变化。因为如果你忘记初始化首选项,你将获得空指针异常。

         public static void rollback(Context context) {
                                        if (preferences == null)
                                        // getSharedPreference because getPreferences is a method of Activity only (not Service or Context)
                                        preferences = context.getSharedPreferences(PREFS_NAME, 0);
                                        editor = preferences.edit();

                                        }

持续存在的最佳方式是 “使用优惠活动” 。查看示例并阅读有关它们的在线文档。使用 EditTextPreference 自动保留值

首先,没有机构使用共享首选项来保存用户ID和密码。因为共享首选项是键值对。对于关键电子邮件,您只能拥有一个相应的值。这里你想要的是: - 对于密钥Email多个值和密钥密码也是多个值。

如果你想做这样的事情,有一个解决方案。 使用电子邮件ID(xyz@xyz.com)作为密钥。并且密码作为密钥的值(xyz@xyz.com)。