2011-12-06 20 views
15

Es bastante simple, todo lo que tengo que hacer es guardar una puntuación más alta (un número entero) para el juego. Supongo que la forma más fácil de hacer esto sería almacenarlo en un archivo de texto, pero realmente no tengo ni idea de cómo hacerlo.Necesita guardar un puntaje alto para un juego de Android

Respuesta

39

Si todo lo que necesita es para almacenar un entero, entonces SharedPreferences sería lo mejor para su uso:

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

Para obtener una preferencia:

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

Por supuesto sustituir "key" con la clave de su valor de puntaje alto y "myPrefsKey" con la clave para sus preferencias (Estas pueden ser las que sean. Es bueno establecerlas en algo reconocible y único).

+1

Solo para confirmar, ¿almacenará esto los datos así que la próxima vez que ejecute el juego puedo obtenerlo? – Zizo47

+2

Sí, estos datos persisten entre las ejecuciones de su aplicación. Solo asegúrate de llamar a commit(); en el editor para que se guarden! – dymmeh

+0

Muchas gracias, lo intentaré ahora – Zizo47

2

Uso 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(); 
    } 
} 

Es manera más fácil de almacenar tales cosas.

2

creo this link le ayudará en ella:

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(). 

mi punto de vista, la mejor manera de ahorrar puntuación más alta es SharedPreferences.

0
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()); 
    } 

} 
+2

Se deben agregar algunas líneas de texto para explicar qué hace realmente este bloque de código. – Sufian

Cuestiones relacionadas