O
ostone86
Neues Mitglied
- 0
Hallo, ich habe ein Android-Spiel programmiert. Die Game-Loop läuft soweit einwandfrei. Nur habe ich nun Probleme die Einträge aus dem Highscore permanent zu speichern. Ich habe mir zuvor eine Test-Klasse in Java geschrieben die die Daten aus einer ArrayList _highscore unter anderem in eine txt-Datei schreiben soll und auch wieder lesen können muss. In der Java-Console klappt das einwandfrei. Instanziiere ich die Highscore-Klasse nun aber in meiner Android Highscore-Activity stürzt die App im Virtual-Device allerdings beim Aufruf der writeData() Methode ab.
Der Code lautet wie folgt:
Muss ich Android einen Pfad zum Speichern vorgeben? Bei Java wird dies ja einfach direkt in den Hauptpfad des Programms geschrieben. Benötigt meine App dafür spezielle Android-Berechtigungen?
Kann da jemand weiterhelfen?
Der Code lautet wie folgt:
Code:
public class Highscore {
// in der ArrayList stehen die Highscore-Einträge
private ArrayList<String> _highscore = new ArrayList<String>();
// Methode zum Hinzufügen von Spielennamen und Punktzahl
public void addData(String name, int score){
String newName = name;
int newScore = score;
_highscore.add(newName +"#" +newScore);
}
// Methode zum Datei lesen
public void readData() throws ClassNotFoundException{
try {
final ObjectInputStream input = new ObjectInputStream(new FileInputStream("Highscore.txt"));
Object highscore = input.readObject();
input.close();
_highscore = (ArrayList<String>) highscore;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// Methode zum Datei schreiben
public void writeData(){
try {
final ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream("Highscore.txt"));
output.writeObject(_highscore);
output.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String getName(int index){
String data = _highscore.get(index);
String[] res = data.split("#");
return res[0];
}
public int getScore(int index){
String data = _highscore.get(index);
String[] res = data.split("#");
return Integer.parseInt(res[1]);
}
// Highscore-Liste sortieren
public void sortData(){
for(int j=1; j < _highscore.size(); j++){
for(int i = 0; i < _highscore.size()-j; i++){
if(getScore(i) < getScore(i + 1)){
String tmp = _highscore.get(i);
_highscore.set(i, _highscore.get(i+1));
_highscore.set(i + 1, tmp);
}
}
}
}
public String sortedHighscore(int index){
String space = _highscore.get(index);
return space;
}
}
Kann da jemand weiterhelfen?