【问题标题】:Getting data from one activity and storing in another activity at app relaunch在应用重新启动时从一个活动中获取数据并存储在另一个活动中
【发布时间】:2016-11-26 21:07:43
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    Here's a guide 了解如何使用 SharedPreferences。顺便提一句。不要被名字所迷惑,你可以用它们保存各种东西,而不仅仅是“偏好”。

    【讨论】:

      【解决方案2】:

      您不需要为此使用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);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2015-11-25
        • 2018-11-17
        • 2012-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-18
        • 1970-01-01
        • 2011-12-18
        相关资源
        最近更新 更多