2017-07-10 5 views
0

alle. Ich bin ein ernsthafter Neuling hier, also bitte vergib Form/Terminologie Probleme in gewissem Maße. Ich habe dieses Thema buchstäblich stundenlang recherchiert, inklusive aller relevanten Stränge, versprochen! JA, ich lese die Android-Materialien. Ich habe auch die Kapitel von 3 Büchern zu diesem Thema gelesen!Android Studio: So speichern Sie die letzte Aktivität in den Einstellungen, um beim Neustart zu laden

Jeder scheint Beispiele für Benutzernamen oder Soundeinstellungen zu verwenden. Verwende ich den falschen Ort, um diesen Datentyp vollständig zu speichern?

Als erstes Projekt versuche ich Java und Android zu lernen. Ich schreibe ein Buch über interaktive Fiktion - denke über die Choose Your Own Adventure Bücher aus der Kindheit nach.

Ich möchte, dass die App den neuesten Aktivitätsnamen in sharedPreferences speichert, so dass die App (entweder automatisch oder über eine Schaltfläche "Spiel laden") zu der Aktivität (Seite) zurückkehrt, auf der sich der Benutzer zuletzt befand.

Ich plane, dann die Präferenz für jede Aktivität zu bearbeiten, wie der Benutzer das Buch durchläuft, so dass sie überall laden können.

Hier ist der Code, den ich denke, soll ich den Vorzug einzurichten verwenden:

SharedPreferences setpage = getSharedPreferences("page", Context.MODE_PRIVATE); 
SharedPreferences.Editor editor =setpage.edit(); 
editor.setpage ("page"); 

aber ich bekomme sofort roten Buchstaben auf dem „editor.setpage“. Was mache ich falsch?

Wie würden Sie die letzte Aktivität in den Einstellungen speichern?

Danke!

Antwort

1

Keine setPage(..) Methode der SharedPreferences.Editor

Sie Werte auf diese Weise einstellen:

SharedPreferences prefs = getSharedPreferences("MY PREF", Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = prefs.edit(); 
editor.putString("pageName","page"); 
editor.apply(); 

Nach, wenn Sie Daten abrufen möchten:

SharedPreferences prefs = getSharedPreferences("MY PREF", MODE_PRIVATE); 
String pageName = prefs.getString("pageName", null); 
if (pageName == null) { 
    //"No name defined" is the default value. 
} 

Sie mehr überprüfen können über SharedPreferences aus here

+0

Ok, das sehr geholfen, und ich denke, ich speichern kann der Aktivitätsname als String jetzt ... ABER wie kann ich diesen String abrufen und ihn zu einem verwendbaren Klassennamen machen? Wenn ich einen solchen Code schreibe: Intent gotopage = new Intent (MainActivity.this, // BRAUCHEN GESICHERTE DATEN HIER //); startActivity (gotopage); –

+0

yeh. Sie können Daten nach Wunsch speichern und jederzeit abrufen. Was meinst du mit "mach es zu einem brauchbaren Klassennamen"? – Aryan

0

Was Sie tun möchten, kann nicht durch SharedPreferences erreicht werden, da es ziemlich einfach ist. Aber ich empfehle Ihnen, über Datenbanken und ihre Integration mit Android zu lernen. Manchmal benötigen Sie SharedPreferences, wenn Sie beispielsweise zählen möchten, wie oft der Benutzer die App öffnet.

Lassen Sie mich die SharedPreferences mit dem folgenden Code teilen.

In der ersten Zeile wird ein neues SharedPreference-Objekt erstellt, und zweitens wird ein Editor erstellt. Mit anderen Worten, Sie erstellen einen Stift, um etwas in SharedPreferences zu schreiben.

In der vierten Zeile erhalten Sie die vorherige Menge von count. Erster arguement von getInt() Methode sagt, gib mir die count, wenn Zählung nicht existiert return 0 (es geschieht zum ersten Mal, wenn Sie die App öffnen)

Wenn Sie putInt() Methode suchen, die arguements (Dinge, die dazwischen paranthesises sind) bei der Die sechste Zeile, das erste Argument, das count ist, ist ein eindeutiger Schlüssel, in dem Sie Ihre Daten speichern (der Datentyp hängt von der Methode ab, die Sie aufrufen. Sie können beispielsweise auch putString() für andere Fälle verwenden).Sie benötigen diesen Schlüssel, wenn Sie den Wert erhalten möchten (wie in der vierten Zeile), zweites Argument ist der neue Wert count

Letzte Zeile ändert sich dies.

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
SharedPreferences.Editor editor = preferences.edit(); 

int previousCount = preferences.getInt("count", 0); 

editor.putInt("count", previousCount + 1); 
editor.commit(); 
0

den Namen der Aktivität als die Aktivität von der SharedPreference erhalten Zeichenfolge speichern

SharedPreferences sharedPref = getSharedPreferences("MyPages", Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPref.edit(); 
editor.putString("page", "PageX"); 
editor.apply(); 

Dann und starten Sie es

SharedPreferences sharedPref = getSharedPreferences("MyPages", Context.MODE_PRIVATE); 
      String page = sharedPref.getString("page", "PageX"); 
      Intent ActivityPage = new Intent(MainActivity.this, Class.forName(page)); 
      startActivity(ActivityPage); 
Verwandte Themen