Autore Topic: Salvataggio di una variabile int, quale metodo utilizzare e come utilizzarlo ?  (Letto 747 volte)

Offline AnonDev

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Windows 10 Technical Preview
Buonsalve a tutti. Ho da poco cominciato a "smanettare" con Android Studio e qualche risultato l'ho ottenuto, ora pero' mi sono bloccato. Nell'app vorrei implementare la possibilità di visualizzare il punteggio piu' alto ottenuto, ovviamente anche dopo aver chiuso e riaperto l'applicazione, quindi ho cercato di documentarmi e ho pensato di utilizzare la SharedPreferences ma trovo solo esempi di salvataggio di stringhe e non di  numeri ovvero variabili intere che servono a me in quanto devo trattare un record. Inoltre come dovrei fare per fare il controllo sul record ? Mi spiego, una volta salvato il record, e il giocatore volesse fare un'altra partita quindi fare un nuovo punteggio, io come dovrei fare per confrontare il nuovo punteggio con il record per stabilire se sovrascrivere il record o se lasciarlo invariato ? Faccio bene ad utilizzare le SharedPreferences o è meglio utilizzare qualcos'altro ?

Grazie mille a chi mi risponderà.

Ps: Ho cercato molto ma non ho trovato una guida che faccia al caso mio quindi non mi uccidete se voi la trovaste subito, in quanto io il mio l'ho fatto ;)

Offline MisterAnt

  • Utente normale
  • ***
  • Post: 272
  • Respect: +4
    • IlSikano
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S4 Active,Galaxy SIII I9300, Galaxy Tab GT-P5100
  • Play Store ID:
    MisterAnt
  • Sistema operativo:
    Ubuntu 12.04/Winzoz 7/Winzoz xp
Re:Salvataggio di una variabile int, quale metodo utilizzare e come utilizzarlo ?
« Risposta #1 il: 19 Febbraio 2015, 02:20:48 CET »
0
Ciao,
se vuoi confrontare i punteggi e quindi non salvare sempre un solo valore int ti converrebbe utilizzare un database...così ti salvi anche altre informazioni tipo nome,data,ora e punteggio naturalmente
Se le zampe del coniglio sono così fortunate, che fine ha fatto il coniglio?

Offline AnonDev

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Windows 10 Technical Preview
Re:Salvataggio di una variabile int, quale metodo utilizzare e come utilizzarlo ?
« Risposta #2 il: 19 Febbraio 2015, 02:40:50 CET »
0
Ciao,
se vuoi confrontare i punteggi e quindi non salvare sempre un solo valore int ti converrebbe utilizzare un database...così ti salvi anche altre informazioni tipo nome,data,ora e punteggio naturalmente

Se io volessi confrontare il valore salvato in precedenza con magari uno nuovo e nel caso in cui quello nuovo fosse maggiore di quello salvato, sovrascrivere quello vecchio con quello nuovo, non mi servono data ora ecc anche per fare questo ho per forza bisogno di un database ? Grazie comunque dell'attenzione.
« Ultima modifica: 19 Febbraio 2015, 03:30:24 CET da AnonDev »

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 716
  • Respect: +151
    • Github
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Huawei P9 Lite
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Salvataggio di una variabile int, quale metodo utilizzare e come utilizzarlo ?
« Risposta #3 il: 19 Febbraio 2015, 10:12:52 CET »
0
DB o SharedPref?

Il concetto è molto semplice:
Il numero di dati è variabile nel tempo o è molto grande? Usa il DB
Il numero di dati da salvare è sempre lo stesso? Meglio le Shared Preferences.

Storage Options | Android Developers

Una volta che hai ottenuto la tua istanza di SharedPreferences puoi usare

Codice (Java): [Seleziona]
SharefPreferences pref = getPreferences(MODE_PRIVATE);
int punteggio = pref.getInt("PUNTEGGIO", 0);

per leggere interi e

Codice (Java): [Seleziona]
SharedPreferences.Editor edit = pref.edit();
edit.putInt("PUNTEGGIO", punteggio);
edit.commit();

per scriverli.
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline AnonDev

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Windows 10 Technical Preview
Re:Salvataggio di una variabile int, quale metodo utilizzare e come utilizzarlo ?
« Risposta #4 il: 19 Febbraio 2015, 15:07:43 CET »
0
DB o SharedPref?

Il concetto è molto semplice:
Il numero di dati è variabile nel tempo o è molto grande? Usa il DB
Il numero di dati da salvare è sempre lo stesso? Meglio le Shared Preferences.

Storage Options | Android Developers

Una volta che hai ottenuto la tua istanza di SharedPreferences puoi usare

Codice (Java): [Seleziona]
SharefPreferences pref = getPreferences(MODE_PRIVATE);
int punteggio = pref.getInt("PUNTEGGIO", 0);

per leggere interi e

Codice (Java): [Seleziona]
SharedPreferences.Editor edit = pref.edit();
edit.putInt("PUNTEGGIO", punteggio);
edit.commit();

per scriverli.

Penso che le sharedpreferences andranno piu' che bene.

Ma nel caso in cui io volessi fare un confronto con un'altra variabile sul punteggio ? Ad esempio se punteggio2>punteggio allora sovrascrivi il valore di punteggio con quello di punteggio2, come dovrei comportarmi ?

Grazie per la pazienza :)

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 716
  • Respect: +151
    • Github
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Huawei P9 Lite
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Salvataggio di una variabile int, quale metodo utilizzare e come utilizzarlo ?
« Risposta #5 il: 19 Febbraio 2015, 15:32:00 CET »
0
Codice (Java): [Seleziona]
private final String FILE_PUNTEGGI = "Punteggi";
private final String KEY_PUNTEGGIO_MIGLIORE = "PunteggioMigliore";

/**
 * Aggiorna il punteggio memorizzato se quello indicato è migliore,
 * restituisce true se un aggiornamento è stato effettuato.
 */

public boolean aggiornaSeMigliore(Context ctx, int punteggio) {
  SharedPreferences pref = ctx.getSharedPreferences (FILE_PUNTEGGI, Context.MODE_PRIVATE);
  int vecchioPunteggio = pref.getInt(KEY_PUNTEGGIO_MIGLIORE, 0);
  if (punteggio > vecchioPunteggio) {
    SharedPreferences.Editor edit = pref.edit();
    edit.putInt(KEY_PUNTEGGIO_MIGLIORE, punteggio);
    edit.commit();
    return true;
  }
  return false;
}
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline AnonDev

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Windows 10 Technical Preview
Re:Salvataggio di una variabile int, quale metodo utilizzare e come utilizzarlo ?
« Risposta #6 il: 19 Febbraio 2015, 16:38:30 CET »
0
Codice (Java): [Seleziona]
private final String FILE_PUNTEGGI = "Punteggi";
private final String KEY_PUNTEGGIO_MIGLIORE = "PunteggioMigliore";

/**
 * Aggiorna il punteggio memorizzato se quello indicato è migliore,
 * restituisce true se un aggiornamento è stato effettuato.
 */

public boolean aggiornaSeMigliore(Context ctx, int punteggio) {
  SharedPreferences pref = ctx.getSharedPreferences (FILE_PUNTEGGI, Context.MODE_PRIVATE);
  int vecchioPunteggio = pref.getInt(KEY_PUNTEGGIO_MIGLIORE, 0);
  if (punteggio > vecchioPunteggio) {
    SharedPreferences.Editor edit = pref.edit();
    edit.putInt(KEY_PUNTEGGIO_MIGLIORE, punteggio);
    edit.commit();
    return true;
  }
  return false;
}

Mi stai chiarendo molti dubbi quindi grazie ancora, ma ne ho ancora uno, cosa rappresenta "Context ctx" ? Nel mio codice non ne ho fatto uso quindi quando devo richiamare il metodo oltre al punteggio non so cosa passare. Scusa ancora per la mia ignoranza.

ps: ho provato a goolare un po' ma non ho capito molto

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 716
  • Respect: +151
    • Github
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Huawei P9 Lite
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Salvataggio di una variabile int, quale metodo utilizzare e come utilizzarlo ?
« Risposta #7 il: 19 Febbraio 2015, 17:17:13 CET »
0
Il Context rappresenta le informazioni di base dell'ambiente in cui sta girando l'applicazione.

Tutte le Activity ereditano da questa classe, per cui se sei in un'attività puoi fare

Codice (Java): [Seleziona]
aggiornaSeMigliore(this, punteggio);
Se invece sei in un Fragment devi richiamare l'attività che lo "contiene":

Codice (Java): [Seleziona]
aggiornaSeMigliore(getActivity(), punteggio);
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.