如何防止在调用相同活动时覆盖被覆盖

时间:2013-09-01 02:08:20

标签: android android-activity save

我正在创造一个记忆游戏。在用户完成游戏后,他可以开始新的游戏。为了玩新游戏,我决定再次召唤活动。但是,当再次调用活动时,分数会在初始化时返回到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 个答案:

答案 0 :(得分:0)

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

基本步骤是通过创建SharedPreferences.Editor实例来存储它们(确保在写入首选项后调用commit()。然后使用getSharedPreferences方法检索它们位于您的第一个Activity。这个链接有一个很好的使用它的例子。

Full SharedPreference Docs

如果您在应用关闭时不需要保持数据持久性,并且根据您使用它做了什么,您也可以将其作为extra中的Intent传递给您与name合作,但SharedPreferences可能会更好,具体取决于您的需求。