SharedPreferences Problem

Marv397

Mitglied
Hi, ich habe eine App Programmiert und benutze dazu SharedPreferences.
Aber jedes mal wenn ich mein Handy neu starte oder ein paar Stunden nicht in der App war, werden die Werte wieder gelöscht..

Bin gerade am verzweifeln

Weis jemand eine Lösung oder hat eine bessere Möglichkeit Variablen Dauerhaft zu speichern?
Benutze Android Studio.

Mein Code ist wie folgt:

SharedPreferences sp = getSharedPreferences("your_prefs", GameActivity.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putInt("coins", iCoins);
editor.apply();
 
Gab da vor 2/3 Jahren mal ein Bug dass man auf einigen Devices erst Editor#clear() aufrufen muss bevor man anfängt Daten zu editieren / hinzuzufügen.
Weiß allerdings nicht ob der noch besteht.

Java:
SharedPreferences sp = getSharedPreferences("pref", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.clear();
// edit
editor.apply();
 
Java:
public class MainActivity extends AppCompatActivity{

    Button buttonPlay;
    int iCoins;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        buttonPlay = (Button) findViewById(R.id.buttonPlay);


        SharedPreferences sp = getSharedPreferences("your_prefs", GameActivity.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
        editor.putInt("coins", iCoins);
        editor.clear();
        editor.commit();

        iCoins = sp.getInt("coins", iCoins);

        Log.i("Game", String.valueOf(iCoins));

    }


    public void buttonPlayPressed(View view){
        Intent i = new Intent(this, LevelActivity.class);
        startActivity(i);
        iCoins++;
        }

Mir ist aufgefallen, dass das eigentlich gar nicht so funktionieren kann^^
Hast du ne Lösung für mich. Steh ziemlich auf dem Schlauch..
 
Also ich möchte damit Coins abspeichern für mein Spiel.
Das heißt ich hab die Variable iCoins -> Ohne Wert.
Immer wenn ich den Button drücke, soll die Variable um ein erhöht werden, iCoins++. (nur testweise)
Dann will ich iCoins in SharedPreferences speichern und auch aktualisieren können.
Und die Coins sollen dann beim Start wieder wie beim verlassen des Spieles da sein
 
Dazu kannst du dir mal den LifeCycle einer Activity anschauen. Gibt noch ein paar mehr Methoden außer onCreate(..).
So gibts auch eine die getriggert wird sobald die Activity geschlossen wird. Dort kannst du deinen neuen Wert für Coins setzen.
In der onCreate kannst du , wie du es schon hast, die Prefs auslesen.
 

Zurück
Oben