使用共享首选项进行高分保存

时间:2014-03-17 09:58:36

标签: android sharedpreferences

地狱我正在尝试为我的项目制作高分,但我的代码只保存最后一个值而不是最高值 我怎样才能存储最高价值?这是我的代码。

这是保存过程 - >

            SharedPreferences prefs = getSharedPreferences(MY_PREFERENCES, Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = prefs.edit();
            TextView outputView = (TextView)findViewById(R.id.textscore);
            CharSequence textData = outputView.getText();

            if (textData != null) {
               editor.putString(TEXT_DATA_KEY, textData.toString());
               editor.commit();
            } 

这是阅读过程

  SharedPreferences prefs = getSharedPreferences(MY_PREFERENCES, Context.MODE_PRIVATE);

  String textData = prefs.getString(TEXT_DATA_KEY, "No Preferences!");


            TextView outputView = (TextView) findViewById(R.id.textread); 

5 个答案:

答案 0 :(得分:2)

你需要检查以前保存的值,看看哪个最高,你只保存最新值,而不是最高值

E.g。

      if (textData != null) {
           int score = Integer.parseInt(textData.toString());

           if(score > prefs.getInt(TEXT_DATA_KEY, 0)) // Or get String, with parse Int.
           {
               //editor.putString(TEXT_DATA_KEY, textData.toString()); // Should be saved as int
               editor.putInt(TEXT_DATA_KEY, score);
               editor.commit();
           }
        } 

答案 1 :(得分:1)

仅当共享首选项中的现有值小于新值时,才需要存储新值。

您似乎没有在代码中检查此值

答案 2 :(得分:1)

替换

if (textData != null) {
               editor.putString(TEXT_DATA_KEY, textData.toString());
               editor.commit();
            } 

if (textData != null) {
            if(Integer.parseInt(prefs.getString(TEXT_DATA_KEY, "0")) < Integer.parseInt(outputView.getText())) {
                editor.putString(TEXT_DATA_KEY, textData.toString());
                editor.commit();
            }
         }

答案 3 :(得分:0)

首先,为什么要将高分保存为字符串,使用int或float(如果必须)。

最简单的方法是在保存前读取高分并与您尝试保存的分数进行比较。

答案 4 :(得分:0)

您需要跟踪游戏中的高分。使用数字而不是使用文本视图的字符串最容易完成:

int hiScore = 0;

在您的创业公司中,也许在onCreate()中,您需要获得之前的高分:

SharedPreferences prefs = getSharedPreferences(MY_PREFERENCES, Context.MODE_PRIVATE);
try {
    hiScore = prefs.getInt(HI_SCORE, 0);

} catch (NumberFormatException e) {
    hiScore = 0;
}

当获得新分数时,如果它高于之前的高分,您将要记录它:

if (newScore > hiScore) {
    hiScore = newScore;

    SharedPreferences.Editor editor = prefs.edit();
    editor.putInt(HI_SCORE, hiScore);
    editor.commit();
}