Android Studio - сохраните совокупный счет во всех играх - PullRequest
0 голосов
/ 04 мая 2018

У меня есть базовая викторина, в которой я могу получить счет за каждую попытку со второго экрана (QuizActivity), используя приведенное ниже:

    SharedPreferences preferences =
            PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    SharedPreferences.Editor editor = preferences.edit();

    editor.putInt("myHighScore", mScore);
    editor.commit();

    SharedPreferences preferences2 =
            PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    SharedPreferences.Editor editor2 = preferences2.edit();

    editor2.putInt("myXP", xp);
    editor2.commit();

Затем я могу получить эти значения на первом экране (MainActivity), используя:

    SharedPreferences preferences =
            PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    int highScore = preferences.getInt("myHighScore", 0);

    SharedPreferences preferences2 =
            PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    int xp = preferences2.getInt("myXP",0 );

Но, xp сбрасывается каждый раз до последнего значения - мне нужно уметь сохранять общее текущее значение всех результатов в такой переменной, как xp, и добавлять к ней каждый раз, когда тест завершается.

Нужно ли мне использовать здесь больше общих преференций, сохранять текущее значение на первом экране, выводить его на второй экран и отправлять обратно на первый экран? Чувствую, что я слишком запутываю проблему сейчас. Любая помощь приветствуется

Приветствия

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Если я понял, что ваша проблема в том, что ваши данные поступают в виде значений теста и обновляют их каждый раз в общем предпочтении. Итак, что вы делаете, это получаете последние данные, используя общие предпочтения, а затем добавляете к новому значению, то есть очки или xp. Затем сохраните его в общих настройках, используя метод apply.

SharedPreferences preferences=PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    int highScore =highScore +preferences.getInt("myHighScore", 0);

    SharedPreferences preferences2 =
            PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    int xp =xp+ preferences2.getInt("myXP",0 );

SharedPreferences preferences =
            PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    SharedPreferences.Editor editor = preferences.edit();

    editor.putInt("myHighScore", mScore);
    editor.apply();

    SharedPreferences preferences2 =
            PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    SharedPreferences.Editor editor2 = preferences2.edit();

    editor2.putInt("myXP", xp);
    editor2.apply();
0 голосов
/ 04 мая 2018

Ваша переменная xp не является глобальной, поэтому вы должны отслеживать и обновлять ее значение вручную. У вас есть несколько вариантов:

  1. Создать класс для хранения XP. И передайте это. Упорствовать на уничтожение и т.д ..

    1. Получите доступ к xp из настроек onCreate, измените его при запуске приложения и сохраните его до переключения между экранами
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...