0

以下是提交和回滚 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 编辑器强制执行的更多细节。我真的不知道还有什么好说的。

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

4

1 回答 1

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 和密码。因为共享偏好是键值对。对于关键电子邮件,您只能有一个相应的值。这里你想要的是:- 对于密钥电子邮件多个值和密钥密码也是多个值。

如果您想做这样的事情,存在一种解决方案。使用电子邮件 ID (xyz@xyz.com) 作为 key。和密码作为键的值(xyz@xyz.com)。

于 2013-09-10T17:14:56.423 回答