Wert aus einem SharedPreferences einer Klasse einer anderen Klasse übergeben, nur wie?

T

TheLaberkopf

Neues Mitglied
0
Ich habe folgendes Problem, in meiner Klasse Einstellungen, kann man einen Integer Wert festelegen, dieser wird anschließend in einem Sharedpreferences gespeichert, was soweit auch alles klappt. Auch die Ausgabe des Wertes klappt allerdings nur in dieser Klasse.
Jetzt wollte ich in einer anderen Klasse genau diesen Wert wieder verwenden, dazu habe ich mir eine Methode gebastelt, die diese in die Ziel-Klasse übergibt. Bekomme allerdings eine nullpointerexception.

Ich hoffe es kann mir jemand helfen.
 
Bitte poste den Code dazu!
 
In den Einstellungen:
Anzahl wird von einem EditText übernommen und auch in einem SharedPreferences gespeichert.
Code:
VokabelTest test = new VokabelTest();
        test.setAnzahl(anzahl);

Methode in der Ziel-Klasse:
Code:
SharedPreferences Testspeicher;
    SharedPreferences.Editor editor;
    final static String FILENAME = "Daten";
    final static String KEY_Anzahl = "Anzhal";
Code:
    public void setAnzahl(int anzahl){
        editor.putInt(KEY_Anzahl, anzahl);
        editor.commit();
    }

Und diese Fehlermeldung erscheint:
java.lang.NullPointerException: Attempt to invoke interface method 'android.content.SharedPreferences$Editor android.content.SharedPreferences$Editor.putInt(java.lang.String, int)' on a null object reference
 
Die extrahierten Codeteile aus einer App von mir mit Sharedprefs. Anhand einer Variablen die ich setze:

Code:
SharedPreferences prefs=getSharedPreferences("myPrefs",0); //get the prefs, "myPrefs" sit der Name, 0 heißt privat

SharedPreferences.Editor editor = prefs.edit(); //start editing
editor.putBoolean("sound", mView.soundOn); //put a preference under sound, value "soundOn" unter key "sound"
editor.commit(); //confirmation

prefs.getBoolean("sound", true); //retrieve it, gib value die unter dem key "sound" gespeichert ist zurück, falls 
noch nicht existiert gib true zurück

Was du nicht machst:
1. Deine SharedPrefs müssen einen Namen erhalten. Du kannst dadurch ganz viele Unterschiedliche haben. In meinen Fall heißen die "myPrefs", dann fehlt auch...

2. Der Aufruf an getSharedPreferences(String,Int); außerdem noch...

3. Aufruf zu prefs.edit() und Zuweisung zu deiner Editor-Variable

Wegen 3. kommt dein NullPointer, sowie die Fehlermeldung es auch ausgibt
 
Zuletzt bearbeitet:
In der Klasse Einstellungen klappt ja alles, ich kann ihn setzten und auch wieder öffnen und den Wert/Werte auslesen.
In der Ziel-Klasse hab ich das folgender maßen gelöst hatte das übersehen bei mir und daher nicht mit rein gesetzt, es klappt auch wenn ich die Methode (setAnzahl) in der Ziel-Klasse in der OnCreate-Methode aufrufen und einen festen Wert zuweise. Wenn ich jedoch in der Klasse Einstellungen die Methode setAnzahl aufrufe kommt diese Fehlermeldung:blink:
Code:
SharedPreferences Testspeicher;
    SharedPreferences.Editor editor;
    final static String FILENAME = "Daten";
    final static String KEY_Anzahl = "Anzhal";

OnCreate:
Code:
Testspeicher = getApplicationContext().getSharedPreferences(FILENAME, 0);
        editor = Testspeicher.edit();
setAnzahl(15);

Code:
    public void setAnzahl(int anzahl){
        editor.putInt(KEY_Anzahl, anzahl);
        editor.commit();
    }
 

Ähnliche Themen

R
  • RalfKahl
Antworten
10
Aufrufe
298
RalfKahl
R
D
  • Data2006
Antworten
14
Aufrufe
486
jogimuc
J
D
Antworten
9
Aufrufe
1.767
jogimuc
J
Zurück
Oben Unten