Autore Topic: problema salvataggio punteggio  (Letto 740 volte)

marco1991

  • Visitatore
problema salvataggio punteggio
« il: 05 Agosto 2012, 17:52:44 CEST »
0
ciao a tutti,

nel gioco che sto facendo vorrei poter salvare i punteggi..le funzioni di load e save sono queste:

Codice (Java): [Seleziona]
public static void load(FileIO files) {
        BufferedReader in = null;
        try {
            in = new BufferedReader(new InputStreamReader(
                    files.readFile(".prova")));
            soundEnabled = Boolean.parseBoolean(in.readLine());
            for (int i = 0; i < 5; i++) {
                highscores[i] = Integer.parseInt(in.readLine());
            }
        } catch (IOException e) {
            // :( It's ok we have defaults
        } catch (NumberFormatException e) {
            // :/ It's ok, defaults save our day
        } finally {
            try {
                if (in != null)
                    in.close();
            } catch (IOException e) {
            }
        }
    }
   
    public static void save(FileIO files) {
        BufferedWriter out = null;
        try {
            out = new BufferedWriter(new OutputStreamWriter(
                    files.writeFile(".prova")));
            out.write(Boolean.toString(soundEnabled));
            for (int i = 0; i < 5; i++) {
                out.write(Integer.toString(highscores[i]));
            }

        } catch (IOException e) {
        } finally {
            try {
                if (out != null)
                    out.close();
            } catch (IOException e) {
            }
        }
    }


il punteggio viene salvato correttamente mente l'aaplicazione è aperta, ma se riavvio il cellulare il salvataggio viene perso. qualcuna mi sa illuminare sul perchè?

grazie mille!!!

la classe fileIO che arriva come parametro è questa
Codice (Java): [Seleziona]
 public class AndroidFileIO implements FileIO {
    Context context;
    AssetManager assets;
    String externalStoragePath;

    public AndroidFileIO(Context context) {
        this.context = context;
        this.assets = context.getAssets();
        this.externalStoragePath = Environment.getExternalStorageDirectory()
                .getAbsolutePath() + File.separator;
    }

    public InputStream readAsset(String fileName) throws IOException {
        return assets.open(fileName);
    }

    public InputStream readFile(String fileName) throws IOException {
        return new FileInputStream(externalStoragePath + fileName);
    }

    public OutputStream writeFile(String fileName) throws IOException {
        return new FileOutputStream(externalStoragePath + fileName);
    }
   
    public SharedPreferences getPreferences() {
        return PreferenceManager.getDefaultSharedPreferences(context);
    }
}
« Ultima modifica: 05 Agosto 2012, 17:55:23 CEST da marco1991 »

Offline mdb

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: +7
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    Prometheo Apps
  • Sistema operativo:
    Windows
Re:problema salvataggio punteggio
« Risposta #1 il: 11 Agosto 2012, 12:45:58 CEST »
+1
Per salvare un boolean e 5 valori interi, ti conviene usare le SharedPreference!

Ad esempio (l'ho scritto al volo, non testato)
Codice: [Seleziona]
SharedPreferences pref = getSharedPreferences("RISULTATI", Activity.MODE_PRIVATE);
final String KEY_SOUND="sound";

//scrive
SharedPreferences.Editor editor=pref.edit();
editor.putBoolean(KEY_SOUND, soundEnabled);
editor.commit();

//legge
soundEnabled=pref.getBoolean(KEY_SOUND, false);

info qui:
Storage Options | Android Developers
SharedPreferences | Android Developers

 :-)
App per Android:
Almanacco: Giorno per giorno, eventi, notizie, giochi e curiosità, da leggere e condividere
Proverbi Napoletani: Più di 50 proverbi da ascoltare in dialetto napoletano. Due sottofondi musicali.

marco1991

  • Visitatore
Re:problema salvataggio punteggio
« Risposta #2 il: 11 Agosto 2012, 16:03:09 CEST »
0
Per salvare un boolean e 5 valori interi, ti conviene usare le SharedPreference!

Ad esempio (l'ho scritto al volo, non testato)
Codice: [Seleziona]
SharedPreferences pref = getSharedPreferences("RISULTATI", Activity.MODE_PRIVATE);
final String KEY_SOUND="sound";

//scrive
SharedPreferences.Editor editor=pref.edit();
editor.putBoolean(KEY_SOUND, soundEnabled);
editor.commit();

//legge
soundEnabled=pref.getBoolean(KEY_SOUND, false);

info qui:
Storage Options | Android Developers
SharedPreferences | Android Developers

 :-)
grazue per la risposta! in realtà ho gia risolto: il problema è che nella save() salvo tutto su una linea. è  bastato aggiungere un "\n" in ogni ciclo per risolvere. cmq grazie! non conoscevo quella classe ora mi faccio un pò di cultura :D