Befüllen einer SharedPreference

  • Antworten:4
Neggorok
  • Forum-Beiträge: 18

25.09.2020, 13:46:24 via Website

Moin moin!

Ich habe die letzten Stunden verzweifelt versucht eine SharedPreference in einen TextView zu verfrachten.

Nun hat es endlich geklappt, leider verstehe ich aber nicht im geringsten wieso es nun funktioniert.

Das "Problem" liegt an der Stelle mit dem kleinen Pfeil -->
Die beiden Werte NULL und String.valueOf(loggedInUserscore wurden mir in ALLEN Erklärungen andersherum angegeben. Aber dann wird das TextView mit NULL "gefüllt".

Die eigentliche Frage ist nun, ist hier ein Fehler vorhanden, möglicherweise in der Schreibweise, meinem Aufbau oder sonstigem, oder wieso muss ich die beiden Werte sonst tauschen?

Ich hoffe die Frage ist nicht zu dämlich gestellt und jemand versteht was ich meine =)
mfg und schonmal vielen Dank fürs Lesen, der Neggo

public void loadUserScore() {

// if (loggedInUsername != null )
// {
// Toast.makeText(TaskListActivity.this, loggedInUsername, Toast.LENGTH_SHORT).show();
// }else {
// Toast.makeText(TaskListActivity.this, "Daten NICHT vorhanden", Toast.LENGTH_SHORT).show();
// }

    SharedPreferences sharedPreferencUserscore = 
    getSharedPreferences(String.valueOf(loggedInUserscore), Activity.MODE_PRIVATE);

   String setUserscore = sharedPreferencUserscore.getString(
   --> NULL , String.valueOf(loggedInUserscore));

    currentUserscoreTV.setText(setUserscore);
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

25.09.2020, 14:33:36 via App

Wie schreibst du denn deine SharedPrefs und was steht in dem loggedInUserScore String drin

— geändert am 25.09.2020, 14:33:48

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Jokel
Kommentieren
Jokel
  • Forum-Beiträge: 1.537

25.09.2020, 15:57:26 via Website

Hallo wenn wiklich etwas in der Variablen loggedInUserScore steht.
Was bestimmt ein int ist und kein string.

Was würdest du machen?
Du würdest für jeden Wert der in der Variablen ist eine neue sharedprefs Datei anlegen.

Könntest also nie auf deine gespeicherte Werte zugreifen.

SharedPreferences pref = getSharedPreferences("PrefDatei", MODE_PRIVATE);

Dann hast eine einheitliche Datei für deine prefs nicht für jeden Wert eine.

Und mit dem Null als key für deine prefs kommst du auch nicht weiter.

Da wird der key erwartet den du beim commit gemacht hast erwartet.

Lese die Doku zu shared prefs.

— geändert am 25.09.2020, 16:01:42

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.537

25.09.2020, 16:10:38 via Website

Der zweite Wert ist der default Wert der benutzt wird wenn der key nicht in der pref Datei gefundem wird.
Der default Wert wird dann der Variablen übergeben. Aus der preff Datei wird somit nichts gelesen.

Das ist total falsch und geht eigentlich gar nicht.
In deinem Fall wird die int Variable wohl noch aus vorherigen Operationen gesetzt sein. Aber er kommt nicht aus der wenn überhaupt vorhanden der pref Datei.

— geändert am 25.09.2020, 16:14:35

Hilfreich?
Kommentieren
Neggorok
  • Forum-Beiträge: 18

28.09.2020, 12:34:54 via Website

  • Da hol ich die Daten vom Server
    PreferenceManager.getDefaultSharedPreferences(MainActivity.this).edit().putInt("userScore", jsonResponse.getInt("user_score")).apply();

  • Hier speichere ich sie in die Variable
    loggedInUserscore = PreferenceManager.getDefaultSharedPreferences(this).getInt("userScore", -1);

Ich hatte die Erklärung der Prefs aus nem Video Guide, ich werd mir mal die Doku ansehen, ich hatte nur gedacht, da es in dem Guide funktioniert, habe ich einfach was übersehen.

Danke für die schnellen Antworten :)

Hilfreich?
Kommentieren