当调用相同的活动时如何防止分数被覆盖
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 新手,非常感谢您的帮助!以上是关于当调用相同的活动时如何防止分数被覆盖的主要内容,如果未能解决你的问题,请参考以下文章