SharedPreferences在应用程序操作过程中发生冲突,然后在应用程序强制关闭/重新启动设备后完全消失



正如标题所示,我的问题是我使用的一些SharedPreferences在应用程序运行时发生冲突,例如,它们似乎只是重写了每个值,而没有使用它们的"键"。

此外,一旦应用程序完全关闭,强制关闭/重新启动,文件就会完全丢失。

Logcat显示了这些可能的提示,但我一辈子都做不到任何事情:

07-22 13:28:13.980: W/SharedPreferencesImpl(7905):org.xmlpull.v1.XmlPullParserException: Map value without name attribute: string
and
07-22 13:28:13.980: W/SharedPreferencesImpl(7905):  at android.app.SharedPreferencesImpl.loadFromDiskLocked(SharedPreferencesImpl.java:113)

这是我的SharedPrefs:代码

public class SharedPrefs 
{
public static String PREF_FILE = "HangedRes";
public static String USERSCORE;
public static String EXTRAWORDS;
/////////////////////////////////////////////////////////////////
static SharedPreferences settings;
static SharedPreferences.Editor editor;
///////////////////////////////////////////////////////////////////
public static String getStringPreference(Context context, String key) 
{
    settings = context.getSharedPreferences(PREF_FILE, Context.MODE_WORLD_READABLE);
    editor = settings.edit();
    String result = settings.getString(key, null);
    return result;
}
public static void setStringPreference(Context context, String key, String value) 
{
    settings = context.getSharedPreferences(PREF_FILE, Context.MODE_WORLD_READABLE);
    editor = settings.edit();
    editor.putString(key, value);
    //editor.apply();
    editor.commit();
}
/*
public static boolean getBooleanPreference(Context context, String key) {
    settings = context.getSharedPreferences(PREF_FILE, 0);
    editor = settings.edit();
    boolean result = settings.getBoolean(key, false);
    return result;
}
public static void setBooleanPreference(Context context, String key, boolean value) 
{
    settings = context.getSharedPreferences(PREF_FILE, 0);
    editor = settings.edit();
    editor.putBoolean(key, value);
    editor.commit();
}
*/

}

以下是我如何在主代码中调用这些方法:

 // Get current user points and display //////////////////////////
    userScore = SharedPrefs.getStringPreference(this, SharedPrefs.USERSCORE);
    //Check if things are unlocked
    ownWords = SharedPrefs.getStringPreference(this, SharedPrefs.EXTRAWORDS);

如有任何帮助,我们将不胜感激。

哦!

public static String USERSCORE;
public static String EXTRAWORDS;

您在哪里初始化了这些密钥..??:)

把它做成这个

public static String USERSCORE="USERSCORE";
public static String EXTRAWORDS="EXTRAWORDS";`

相关内容

最新更新