Guardar preferencias

Soy un principiante en la programación de Android, por desgracia tengo un problema 🙂

Tengo el método writeSettings () en mi juego en el que estoy tratando de guardar algunas variables para usarlo cuando quiero cargar el último juego por el método readSettings () . Hay parámetros tales como primero (segundo) nombre jugador, primero (segundo) PlayerScore y así sucesivamente. Estoy intentando usar SharedPreferences para guardarlos, pero recibo el cuadro de diálogo "Forzar Cerrar" al iniciar el programa.

SharedPreferences preferences = getPreferences(MODE_PRIVATE); //Global variable private void writeSettings() { SharedPreferences.Editor editor = preferences.edit(); editor.putInt("timeSave", time); editor.putString("firstPlayerNameSave", firstPlayerNameTextView.getText().toString()); editor.putString("secondPlayerNameSave", secondPlayerNameTextView.getText().toString()); editor.putString("firstPlayerScoreSave", firstPlayerScoreTextView.getText().toString()); editor.putString("secondPlayerScoreSave", secondPlayerScoreTextView.getText().toString()); editor.putInt("nowPlayerSave", nowPlayer); editor.commit(); } private void readSettings() { //"time" parameter program reads in another method firstPlayerNameTextView.setText(preferences.getString("firstPlayerNameSave", "")); secondPlayerNameTextView.setText(preferences.getString("secondPlayerNameSave", "")); firstPlayerScoreTextView.setText(preferences.getString("firstPlayerScoreSave", "")); secondPlayerScoreTextView.setText(preferences.getString("secondPlayerScoreSave", "")); nowPlayer = preferences.getInt("nowPlayerSave", -1); } 

Cómo podría saber, el problema aparece en la primera entrada de writeSettings (). Pero no sé lo que estoy haciendo mal?

Lo siento por mi inglés.

Actualizar

 12-23 16:23:31.334: ERROR/AndroidRuntime(410): Uncaught handler: thread main exiting due to uncaught exception 12-23 16:23:31.520: ERROR/AndroidRuntime(410): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.game/com.game.Game}: java.lang.NullPointerException 12-23 16:23:31.520: ERROR/AndroidRuntime(410): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417) 12-23 16:23:31.520: ERROR/AndroidRuntime(410): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 12-23 16:23:31.520: ERROR/AndroidRuntime(410): at android.app.ActivityThread.access$2200(ActivityThread.java:119) 12-23 16:23:31.520: ERROR/AndroidRuntime(410): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 12-23 16:23:31.520: ERROR/AndroidRuntime(410): at android.os.Handler.dispatchMessage(Handler.java:99) 12-23 16:23:31.520: ERROR/AndroidRuntime(410): at android.os.Looper.loop(Looper.java:123) 12-23 16:23:31.520: ERROR/AndroidRuntime(410): at android.app.ActivityThread.main(ActivityThread.java:4363) 12-23 16:23:31.520: ERROR/AndroidRuntime(410): at java.lang.reflect.Method.invokeNative(Native Method) 12-23 16:23:31.520: ERROR/AndroidRuntime(410): at java.lang.reflect.Method.invoke(Method.java:521) 12-23 16:23:31.520: ERROR/AndroidRuntime(410): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 12-23 16:23:31.520: ERROR/AndroidRuntime(410): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 12-23 16:23:31.520: ERROR/AndroidRuntime(410): at dalvik.system.NativeStart.main(Native Method) 12-23 16:23:31.520: ERROR/AndroidRuntime(410): Caused by: java.lang.NullPointerException 12-23 16:23:31.520: ERROR/AndroidRuntime(410): at android.content.ContextWrapper.getPackageName(ContextWrapper.java:120) 12-23 16:23:31.520: ERROR/AndroidRuntime(410): at android.app.Activity.getLocalClassName(Activity.java:3410) 12-23 16:23:31.520: ERROR/AndroidRuntime(410): at android.app.Activity.getPreferences(Activity.java:3444) 12-23 16:23:31.520: ERROR/AndroidRuntime(410): at com.game.Game.<init>(Game.java:69) 12-23 16:23:31.520: ERROR/AndroidRuntime(410): at java.lang.Class.newInstanceImpl(Native Method) 12-23 16:23:31.520: ERROR/AndroidRuntime(410): at java.lang.Class.newInstance(Class.java:1479) 12-23 16:23:31.520: ERROR/AndroidRuntime(410): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 12-23 16:23:31.520: ERROR/AndroidRuntime(410): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2409) 12-23 16:23:31.520: ERROR/AndroidRuntime(410): ... 11 more 

Game.java:69 es una SharedPreferences preferences = getPreferences(MODE_PRIVATE);

Así es como lo hago:

 Editor editor = PreferenceManager.getDefaultSharedPreferences(Context).edit(); editor.putString("firstPlayerNameSave", firstPlayerNameTextView.getText().toString()); editor.commit(); 

Y para leer:

 firstPlayerNameTextView.setText(PreferenceManager.getDefaultSharedPreferences(Context).getString("firstPlayerNameSave", "")); 

Lo que hago es casi idéntico a lo que sugirió el martipelante.

Obtención del editor:

 Editor preferenceEditor = getSharedPreferences("com.mycompany.android.myapp",MODE_PRIVATE).edit(); 

Y leyendo:

  mSharedPreferences = getSharedPreferences("com.mycompany.android.myapp",Context.MODE_PRIVATE); 

AFAIK Activity.getPreferences() es un contenedor para Context.getSharedPreferences(String, int) donde String es el nombre de la actividad. Debe usarse sólo para acceder a las preferencias que son privadas para esta actividad. Intente cambiar el código

 SharedPreferences preferences = getPreferences(MODE_PRIVATE); 

a

 SharedPreferences preferences = PreferenceManager .getDefaultSharedPreferences(context); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.