2017-06-01 3 views
1

Ich versuche, den Wert in meiner ProgressBar zu speichern, also wenn ich die App schließe (beende sie) und führe sie erneut aus, wird der gleiche Wert erneut angezeigt. Ich habe das versucht, indem ich geteilte Präferenzen verwende, aber es spart immer noch nicht und ich weiß nicht, wie ich es lösen soll. Ich habe alles nachgeschlagen, was ich im Internet finden konnte, aber es ist immer sehr simpel gehalten, wie "wie man einen Entertainer in txt/xml speichert", aber das ist nicht das was ich suche.Speichern des aktuellen Status meiner ProgressBar

protected void onPause(){ 
    super.onPause(); 
    fuelBar = (ProgressBar) findViewById(R.id.fuelProgressBar); 
    SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE); 
    incFuel = sharedPref.getInt(FUELBAR, fuelBar.getProgress()); 
    fuelBar.setProgress(incFuel); 
} 

public void onResume(){ 
    super.onResume(); 
    SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPref.edit(); 
    editor.putInt(FUELBAR, fuelBar.getProgress()); 
    editor.commit(); 
} 

public void onStop(){ 
    super.onStop(); 
    fuelBar = (ProgressBar) findViewById(R.id.fuelProgressBar); 
    SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE); 
    incFuel = sharedPref.getInt(FUELBAR, fuelBar.getProgress()); 
    fuelBar.setProgress(incFuel); 
} 

In meinem onCreate Ich habe auch diese Variablen

erklärt
SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPref.edit(); 

Und in meinem MainActivity

int incFuel = 0; 
final String FUELBAR = "fuelBar"; 

SharedPreferences sharedPref; 
SharedPreferences.Editor editor; 

Ich habe wirklich keinen einzigen Anhaltspunkt, was ich fehle und würde es sehr zu schätzen wissen etwas Hilfe.

+0

Ich kann nur Put-Aufrufe auf Ihre SharedPreference-Objekte sehen. Rufen Sie jemals "bekommen"? – tobifasc

+0

Ich habe den Code bearbeitet, bitte sehen Sie es sich nochmal an. –

Antwort

1

Ich kann ein paar Probleme sehen.

  1. Erstens Ihr onStop() ist nicht erforderlich, da die und onResume ausreichend sind.

  2. Ihre und onResume sind in umgekehrter Reihenfolge. (onResume wird nach dem Laden der Aktivität aufgerufen, onPause wird ausgeführt, wenn die Aktivität geschlossen wird)

  3. Sie müssen auch den Fortschritt mit dem geladenen Wert festlegen.

Der folgende Code sollte Sie in die richtige Richtung weisen.

protected void onPause(){ 
    super.onPause(); 
    SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPref.edit(); 
    editor.putInt(FUELBAR, fuelBar.getProgress()); 
    editor.commit(); 

} 

public void onResume(){ 
    super.onResume(); 
    fuelBar = (ProgressBar) findViewById(R.id.fuelProgressBar); 
    SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE); 
    incFuel = sharedPref.getInt(FUELBAR, 0); 
    fuelBar.setProgress(incFuel); 
} 

public void onStop(){ 
    super.onStop(); 
} 
+1

gr8 thx für die Erklärung es hat wirklich geholfen und das Programm funktioniert jetzt perfekt. –

Verwandte Themen