2016-04-27 16 views
0

So habe ich 3 Klassen. Ich habe die Dinge ausprobiert und am Ende eine Integers.xml-Datei mit Werten erstellt, um meine Werte zu speichern. Es funktioniert, aber ich kann nicht herausfinden, wie ich es ändern kann. Ich verstehe, wie man es benutzt.Speichern von ganzen Zahlen in Android

res.getInteger (R.integer.int);

Ich kann einfach nicht herausfinden, wie man es ändert, und ich fange an zu der Schlussfolgerung zu kommen, dass Sie nicht können. Ich habe mich gefragt, wo ich Werte speichern müsste, wenn ich zu meinen anderen Klassen wechsele und die ganzen Zahlen nicht zurücksetzen. Ich entschuldige mich, weil in Android Tonnen Daten gespeichert werden, aber ich konnte nicht implementieren, was sie mir zu meinem Code gesagt haben. Wenn es nur einen einfachen Weg gibt, um sicherzustellen, dass es nur 5 Ganzzahlen speichert, kann ich meine App beenden.

Antwort

1

Die Werte, die in Ihrer Datei integers.xml gespeichert sind, sind Konstanten und können daher nicht geändert werden. Eine schnelle Möglichkeit, 5 ganze Zahlen zu speichern, besteht darin, SharedPreferences zu verwenden und jede ganze Zahl mit einem eigenen eindeutigen Schlüssel zu speichern. Zum Beispiel in einer Aktivität:

SharedPreference prefs = getSharedPreferences("com.example.myapp", MODE_PRIVATE); 
SharedPreferences.Editor editor = prefs.edit(); 
editor.putInt("Integer1", 234); 
editor.putInt("Integer2", 748); 
editor.putInt("Integer3", 747); 
editor.putInt("Integer4", 42); 
editor.putInt("Integer5", 463); 

die Werte Um zurück:

SharedPreference prefs = getSharedPreferences("com.example.myapp", MODE_PRIVATE); 
int integer1 = prefs.getInt("Integer1", 0); 
int integer2 = prefs.getInt("Integer2", 0); 
int integer3 = prefs.getInt("Integer3", 0); 
int integer4 = prefs.getInt("Integer4", 0); 
int integer5 = prefs.getInt("Integer5", 0); 
+0

Ok, danke Sie. Ich werde das nachsehen. – TeenCoder

+0

@TeenCoder Ich habe ein Beispiel hinzugefügt – AgileNinja

+0

vielen Dank! Ich bin vor dem Beispiel auf dieses Problem gestoßen, aber hoffentlich haben Leute, die auf dieses Problem gestoßen sind, es ebenfalls gelöst. – TeenCoder

1

ist der Basiscode zu SharedPrefs lesen und zu schreiben. Beachten Sie, dass dieser Ansatz die Daten speichert lokal auf dem Gerät des Benutzers:

schreiben:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPref.edit(); 
editor.putInt(getString(R.string.saved_high_score), newHighScore); 
editor.commit(); 

lesen:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
int defaultValue = getResources().getInteger(R.string.saved_high_score_default); 
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue); 

Quelle: Official Google Documentation

+0

danke und alle anderen, die geantwortet haben. Ich habe mir ein Youtube-Tutorial angeschaut und konnte meine ganzen Zahlen speichern. Dies ist 100x einfacher als die anderen Datenspeichermethoden, auf die ich gestoßen bin. – TeenCoder

+0

Kein Problem! Kannst du das als Antwort markieren? – tccpg288

0

Wenn Sie nicht wollen, dass diese Zahlen speichern, Nachdem Sie Ihre App geschlossen haben, können Sie sie nicht auf eine statische Liste wie

setzen

Wenn Sie diese ganzen Zahlen gespeichert werden sollen dauerhaft können Sie die SharedPreferences

verwenden

oder Sie können eine SQLite-Datenbank wie this

0

Du hast recht, du kann nicht bearbeiten die resources Dateien verwenden, weil sie nur einmal gelaufen sind.
Wenn Sie Werte speichern möchten, die nach dem Schließen in Ihrer App verbleiben, können Sie SharedPreferences verwenden.
Wenn Sie während der Laufzeit speichern Werte wollen, können Sie eine Klasse mit getters und setters erstellen:

public class Values { 

    int value1; 
    int value2; 

    public int getValue2() { 
    return value2; 
    } 

    public void setValue2(int value2) { 
    this.value2 = value2; 
    } 

    public int getValue1() { 
    return value1; 
    } 

    public void setValue1(int value1) { 
    this.value1 = value1; 
    } 
} 

In jeder Aktivität, die Sie festlegen können, und Sie Werte wie das erhalten:

Values.setValue1(yourValue1); 
Values.getValue1();