Need to save a high score for an Android game

前端 未结 4 691
不知归路
不知归路 2020-12-03 01:45

It\'s quite simple, all I need to do is save a high score (an integer) for the game. I\'m assuming the easiest way to do this would be to store it in a text file but I reall

相关标签:
4条回答
  • 2020-12-03 02:10

    I think this link will help you in it:

    The SharedPreferences class provides a general framework that allows you to save and
    retrieve persistent key-value pairs of primitive data types. You can use
    SharedPreferences to save any primitive data: booleans, floats, ints, longs, and strings. 
    This data will persist across user sessions (even if your application is killed).
    
    User Preferences
    
    Shared preferences are not strictly for saving "user preferences," such as what ringtone
    a user has chosen. If you're interested in creating user preferences for your
    application, see PreferenceActivity, which provides an Activity framework for you to 
    create user preferences, which will be automatically persisted (using shared preferences).
    
    To get a SharedPreferences object for your application, use one of two methods:
    
        getSharedPreferences() - Use this if you need multiple preferences files identified
    by name, which you specify with the first parameter.
        getPreferences() - Use this if you need only one preferences file for your Activity.
    Because this will be the only preferences file for your Activity, you don't supply a name.
    
    To write values:
    
        Call edit() to get a SharedPreferences.Editor.
        Add values with methods such as putBoolean() and putString().
        Commit the new values with commit()
    
    To read values, use SharedPreferences methods such as getBoolean() and getString().
    

    As I see, the best way for you to save high score is SharedPreferences.

    0 讨论(0)
  • 2020-12-03 02:16

    If all you need is to store an integer then SharedPreferences would be best for you to use:

    //setting preferences
    SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
    Editor editor = prefs.edit();
    editor.putInt("key", score);
    editor.commit();
    

    To get a preference:

    //getting preferences
    SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
    int score = prefs.getInt("key", 0); //0 is the default value
    

    Of course replace "key" with the key for your high score value and "myPrefsKey" with the key for your preferences (These can be whatever. It's just good to set them to something recognizable and unique).

    0 讨论(0)
  • 2020-12-03 02:32
    public class HighScores extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_high);
    
            //get text view
            TextView scoreView = (TextView)findViewById(R.id.high_scores_list);
            //get shared prefs
            SharedPreferences scorePrefs = getSharedPreferences(PlayGame.GAME_PREFS, 0);
            //get scores
            String[] savedScores = scorePrefs.getString("highScores", "").split("\\|");
            //build string
            StringBuilder scoreBuild = new StringBuilder("");
            for(String score : savedScores){
                scoreBuild.append(score+"\n");
            }
            //display scores
            scoreView.setText(scoreBuild.toString());
        }
    
    }
    
    0 讨论(0)
  • 2020-12-03 02:33

    Use shared preferences:

    public class Calc extends Activity {
        public static final String PREFS_NAME = "MyPrefsFile";
    
        @Override
        protected void onCreate(Bundle state){
           super.onCreate(state);
           . . .
    
           // Restore preferences
           SharedPreferences settings = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
           boolean silent = settings.getBoolean("silentMode", false);
           setSilent(silent);
        }
    
        @Override
        protected void onStop(){
           super.onStop();
    
          // We need an Editor object to make preference changes.
          // All objects are from android.context.Context
          SharedPreferences settings = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
          SharedPreferences.Editor editor = settings.edit();
          editor.putBoolean("silentMode", mSilentMode);
    
          // Commit the edits!
          editor.commit();
        }
    }
    

    It's easiest way to store such a things.

    0 讨论(0)
提交回复
热议问题