2

タイトルが示唆しているように、私の問題は、私が使用しているいくつかの 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);

どんな助けでも大歓迎です。

4

1 に答える 1

2

おー!

public static String USERSCORE;
public static String EXTRAWORDS;

これらのキーを初期化した場所..?? :)

このようにします

public static String USERSCORE="USERSCORE";
public static String EXTRAWORDS="EXTRAWORDS";`
于 2012-07-22T15:48:44.107 に答える