タイトルが示唆しているように、私の問題は、私が使用しているいくつかの 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);
どんな助けでも大歓迎です。