当调用相同的活动时如何防止分数被覆盖

Posted

技术标签:

【中文标题】当调用相同的活动时如何防止分数被覆盖【英文标题】:How to prevent score from being overwritten when the same activity is called 【发布时间】:2013-09-01 02:08:20 【问题描述】:

我正在创建一个记忆游戏。用户完成游戏后,可以开始新的游戏。为了玩新游戏,我决定再次调用活动本身。但是,当再次调用活动时,分数会回到 0,因为它是初始化的。我想知道是否可以保存以前的分数并防止被覆盖,即使我再次调用相同的活动。

 Check.setOnClickListener(new OnClickListener()

        public void onClick(View v) 

            Answer.setText("You got "+Integer.toString(correct)+" correct answers.");

         
  );

   newGame.setOnClickListener(new OnClickListener()

        public void onClick(View v) 


            Intent i = new Intent(Game.this, Game.class);
            i.putExtra("name", name);
            startActivity(i);

【问题讨论】:

【参考方案1】:

是的,使用SharedPreferences 来存储分数。这是存储简单但持久数据的一种非常好的方法。The Docs 有一个很好的例子来说明如何做到这一点。您可以将它们保存在您的onClick() 或任何您想要的地方。然后,您可以在启动Activity 时检查该首选项是否具有值。如果是这样,那么你就可以用你的旧乐谱做任何你想做的事情了。

基本步骤是通过创建SharedPreferences.Editor 的实例来存储它们(请务必在写入首选项后调用commit()。然后使用getSharedPreferences 方法在您的第一个@987654330 中检索它们@. 该链接有一个很好的使用示例。

Full SharedPreference Docs

如果您不需要在应用程序关闭时保留数据,并且取决于您正在使用它做什么,您也可以将其作为 extra 传递到 Intent 中,就像使用 @ 一样987654333@ 但SharedPreferences 根据您的需要可能会更好。

【讨论】:

我可以使用获得的分数将其存储在sqlite中吗? 是的,但如果这就是你将使用数据库的全部内容,那么SharedPreferences 会更简单、更容易。 没有。我计划设计该应用程序,使其能够创建用户名和存储他们的分数,并显示之前玩家的姓名和分数。就像显示球员和球员得分历史一样。 哦,那你就不需要SharedPreferences了。只需将它们存储在您的数据库中并从这里获取它们。 SQLite DB 传递是一种意图。我应该知道的。无论如何,我还是 android 新手,非常感谢您的帮助!

以上是关于当调用相同的活动时如何防止分数被覆盖的主要内容,如果未能解决你的问题,请参考以下文章

当结果具有相同分数时在 Elasticsearch 中分页

当他们的分数相等时,如何将排名分配给他们共享最高排名的学生?

[THOJ 1599] dices 期望DP

Python - 如何防止for循环覆盖相同的excel表

当正确的对象拖动到正确的框时如何添加分数? [关闭]

如何在 Firebase 中保存用户分数并在 Android Studio 中实时检索