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

Я использую startActivityForResults, чтобы получить данные из игровой активности в основном действии, но мне чего-то не хватает. Я думаю, мне нужно сохранить очки в игровой активности, чтобы при перезапуске приложения оно получало сохраненные очки. Я иду в правильном направлении? И если да, то как мне сохранить очки?

Другая идея, которая возникла у меня в процессе игры, заключалась в том, что, когда пользователь набирает очки, они сразу же отправляются в основное действие и сохраняются там. Когда пользователь перезапускает приложение, основное действие не нужно переходить в игровую активность, чтобы найти точки, они уже будут сохранены в основном действии. Так же, лучше или хуже?

0
Juan Sierra 27 Ноя 2016 в 00:07

2 ответа

Лучший ответ

Я думаю, что вы хотите использовать SharedPreferences. Они доступны для всех действий и сохраняют данные при перезапуске приложений. В MainActivity вы можете проверить onResume(), есть ли новые данные / новый результат, достигнутый пользователем (и сохраненный вами) в GameActivity.

Вот руководство по использованию SharedPreferences. Кстати. не дайте себя обмануть названием, вы можете сохранить с ними все, что угодно, а не только «предпочтения».

1
fweigl 26 Ноя 2016 в 21:29

Для этого вам не нужно использовать startActivityForResult. Самым простым решением было бы сохранить текущий результат в SharedPrefrences файл, к которому могут получить доступ оба Activity.

class ActivityOne extends Activity {
    private void saveUserScore(int score) {
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
        prefs.edit().putInt("score", score).commit();
    }
}

class ActivityTwo extends Activity {
    private int getUserScore() {
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
        return prefs.getInt("score", 0);
    }
}
1
Paul Manta 26 Ноя 2016 в 21:30