从一个活动获取数据并在应用重新启动时存储在另一个活动

时间:2016-11-26 21:07:43

标签: android android-intent android-bundle startactivityforresult android-savedstate

我有一个游戏活动,用户通过点击按钮获得积分。我想要做的是将这些点传递给主要活动,即用户看到的第一个活动。因此,例如,用户进入游戏活动,获得一些积分并完全退出应用程序。当他们重新启动应用程序时,他们可以看到他们对主要活动的总积分。

我正在使用startActivityForResults在主要活动中从游戏活动中获取数据,但我遗漏了一些东西。我想我需要保存游戏活动中的积分,以便在重新启动应用程序时获取存储的点数。我是朝着正确的方向前进的吗?如果是这样,我怎么能保存积分呢?

我的另一个想法是在游戏活动中,当用户获得积分时,积分会立即发送到主要活动并保存在那里。当用户重新启动应用程序时,主要活动不需要转到“游戏活动”来查找点,它们将已存储在主要活动中。这种方式是相同,更好还是更差?

2 个答案:

答案 0 :(得分:1)

我认为你想要使用的是SharedPreferences。它们可以从所有活动中访问,并在应用程序重新启动时保留数据。 在您的MainActivity中,您可以检查for是否有新数据/用户在GameActivity中获得(并保存)的新分数。

关于如何使用SharedPreferences的

Here's a guide。顺便说一句。不要被这个名字所迷惑,你可以用它们保存各种各样的东西,而不仅仅是'偏好'。

答案 1 :(得分:1)

您不需要使用startActivityForResult。最简单的解决方案是将当前分数存储在SharedPrefrences文件中,两个活动都可以访问该文件。

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);
    }
}