Autore Topic: Aiuto shared_prefererences  (Letto 878 volte)

Offline antoni88

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: +1
    • Mostra profilo
Aiuto shared_prefererences
« il: 21 Ottobre 2013, 09:38:10 CEST »
0
ciao a tutti,è da un po che vi leggo ed è da poco di piu che ho iniziato a cimentarmi nella programmazione java per android (tanti taaaaanti anni fa ho fatto un po di programmazione a scuola,su c++ e tanti concetti li ho persi per strada).

Vi scrivo oggi,per cercare una soluzione (un metodo,che mi sarà utile in futuro per cercare di portare a termine i miei piccoli programmini,creati piu per svago che per altro) al seguente problema.

Ho capito l' uso delle shared_preferences,tengono in memoria valori bool o string in maniera permanente.
riesco ad utilizzarle per piccoli programmi,per ad ese,pio, salvare piccole stringhe e visualizzarle o utilizzarle poi in altre activity o in altri punti della stessa activity.

Mi trovo però a voler sviluppare un piccolo programma (speriamo che serva davvero a farmi smettere di fumare=) in cui registrare i pacchetti (o il pacchetto) di sigarette che compro ogni giorno( traite edittext),inserire quanto o speso(tramite edittext),salvare il tutto con un button e ,successivamente, cliccando su un altro button, far uscire il TOTALE delle sigarette comprate e della cifra totale spesa.

Ho quindi creato 4 shared_preferences ("Sigarette","Costo","Sigarette_tot" e "Costo_tot"),nelle prime due inserisco il contenuto delle 2 edittext,(e fin li,nessun problema), il problema si pone quando devo però registrare i totali...non riesco a capire come inizializzare le altre due edittext( che devo inizializzare comunque con un valore no??!) per poi permettergli di tenere in memoria i totali!
se setto "Costo_tot"= "Costo" ovviamente il valore non cambia..devo allora creare una nuova variabile x che fa x="Costo_tot"+"Costo"...ma come inizializzo ALL' INIZIO Costo_tot??

Spero di essere stato il piu chiaro possibile..attendo risposte,magari con un piccolo esempio  :-)

Offline kalacta269

  • Utente normale
  • ***
  • Post: 152
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Asus Transformer pad tf300
  • Sistema operativo:
    windows7
Re:Aiuto shared_prefererences
« Risposta #1 il: 21 Ottobre 2013, 09:59:33 CEST »
0
mmmm ma scusa non è più semplice che ti crei un piccolo database ? sarebbe più facile fare le somme dei totali le ricerche i aggiungere filtri per data ecc ecc.... potresti fare tantissime cose in più e in maniera più semplice

Offline antoni88

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: +1
    • Mostra profilo
Re:Aiuto shared_prefererences
« Risposta #2 il: 21 Ottobre 2013, 10:46:03 CEST »
0
Anzitutto, grazie per la risposta.
Non mi creo un database perché sono arrivato ora alle shared preferenze e vorrei capire BENE come usarle, per poi passare ai DB e scegliere in autonomia come è cosa usare quando mi servono :-)
Non è possibile risolvere la cosa senza l uso di un DB?

Offline kalacta269

  • Utente normale
  • ***
  • Post: 152
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Asus Transformer pad tf300
  • Sistema operativo:
    windows7
Re:Aiuto shared_prefererences
« Risposta #3 il: 21 Ottobre 2013, 10:53:37 CEST »
0
figurati cmq non ho ben capito il tuo problema e la differenza che corre tra costo e costo_totale cioè ogni pacco che compri ha un costo e un costo_totale?

Offline antoni88

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: +1
    • Mostra profilo
Re:Aiuto shared_prefererences
« Risposta #4 il: 21 Ottobre 2013, 11:22:39 CEST »
0
ok.

costo =costo singolo pacchetto di sigarette
costo tot=la somma del costo di tutti i pacchetti di sigarette comprati

costo,di per se non serve a niente.. a me serve solo sapere il costo_tot!

l ho creata sperando mi potesse servire per arrivare al costo totale...sostanzialmente costo è solo il contenuto della mia edittext (in cui inserisco il costo del/dei pacchetti comprati).

il quesito è solamente, con che valore posso inizializzare la mia shared_preference per poi aggiungergli di volta in volta il "costo" di ogni singolo pacchetto??

se la metto uguale alla mia edittext in cui inserisco il costo,(visto che è all' interno di onClick del bottone "salva valori"), il costo_tot non varierà e sarà sempre uguale al contenuto della edittext in questione.. =)

ancora piu preciso:

per editare la preferenza faccio
Codice (Java): [Seleziona]
editor.putString("Costo_tot", textData.toString());
cosi gli do il valore della edittext.
(nb: il codice è preso a caso,non dal mio progetto..ora sono in ufficio e non ho il mio codice sotto mano)

una volta che ho iniziato a segnare il costo totale posso fare
costo_tot=costo (del singolo pacchetto)+ costo_tot

MA,con che valore posso inizializzare la mia preferenza costo_tot per la prima volta che la uso??? con 0?
se faccio
Codice (Java): [Seleziona]
editor.putString("Costo_tot", 0); dentro il metodo onClick del bottone,poi me lo setta a zero ogni volta che clicco il bottone e non mi calcola il totale...
qualcuno ha qualche idea?? =)


Post unito: 21 Ottobre 2013, 13:59:15 CEST
Nessuno sa rispondere?  Please..

Post unito: 21 Ottobre 2013, 22:06:45 CEST
UP
e aggiungo la parola magica,magari accende qualche lampadina..
vorrei creare un counter,in cui tenere la variabile costo_totale e che ogni volta mi sommi il sosto_totale col costo del singolo pacchetto!
« Ultima modifica: 21 Ottobre 2013, 22:06:45 CEST da antoni88, Reason: Merged DoublePost »

Offline emi

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    S III
Re:Aiuto shared_prefererences
« Risposta #5 il: 24 Ottobre 2013, 13:04:36 CEST »
0
Ciao! In realtà le SharedPreferences con l'istruzione:

Codice (Java): [Seleziona]
SharedPreferences CAMPI_EDIT_TEXT = getSharedPreferences("campi_edit",0);vengono instanziate una sola volta, nel senso che se non esiste una shared preferences per CAMPI_EDIT_TEXT di nome "campi_edit" allora gli assegna il valore 0 (questa istruzione ad esempio l'ho messa in onCreate).
Se invece la sharedPreferences associata alla variabile esiste già allora al suo interno permane il valore che l'ultima volta è stato scritto con l'istruzione:

Codice (Java): [Seleziona]
SharedPreferences.Editor editor = CAMPI_EDIT_TEXT.edit();
                    editor.putString("campi_edit",valore_da_inserire);
                    editor.commit();
                   

Offline antoni88

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: +1
    • Mostra profilo
Re:Aiuto shared_prefererences
« Risposta #6 il: 24 Ottobre 2013, 17:34:07 CEST »
0
e se volessi creare un contatore??
è possibile farlo con le shared preferences o sono costretto ad usare un database??

anche se inizializzo il valore della shared preferences (che chiamero A) a 0,dentro o fuori l' onClick,come faccio ad inizializzare un altra shared preferences (che chiamero B) per fare A+x?? (dove x è il valore che voglio sommare al totale di A).

« Ultima modifica: 24 Ottobre 2013, 17:44:33 CEST da antoni88 »

Offline emi

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    S III
Re:Aiuto shared_prefererences
« Risposta #7 il: 24 Ottobre 2013, 18:14:51 CEST »
0
scusa ma non ho capito.. se tu hai una sharedPreferences con un valore, lo puoi modificare come vuoi utilizzandolo anche come contatore, in più le sharedPreferences possono contenere anche più campi al proprio interno ad esempio:

Codice (Java): [Seleziona]
        SharedPreferences CAMPI_EDIT_TEXT;
        CAMPI_EDIT_TEXT=getSharedPreferences("campi_edit",0);
        String via=CAMPI_EDIT_TEXT.getString("via", "");
        String città=CAMPI_EDIT_TEXT.getString("città", "");
        String cap=CAMPI_EDIT_TEXT.getString("cap", "");
       

e per scrivere come sempre:

Codice (Java): [Seleziona]
                   SharedPreferences.Editor editor = CAMPI_EDIT_TEXT.edit();
                    editor.putString("via",via_inserita);
                    editor.putString("città",città_inserita);
                    editor.putString("cap",cap_inserito);
                    editor.commit();
                   
e potresti scrivere:

Codice: [Seleziona]
       SharedPreferences CAMPI_EDIT_TEXT;
        CAMPI_EDIT_TEXT=getSharedPreferences("cont",0);

            Long contatore = CAMPI_EDIT_TEXT.getLong("cont",0);
        contatore++;
   
       SharedPreferences.Editor editor = CAMPI_EDIT_TEXT.edit();
       editor.putString("cont",contatore);
       editor.commit();
 

Offline antoni88

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: +1
    • Mostra profilo
Re:Aiuto shared_prefererences
« Risposta #8 il: 24 Ottobre 2013, 19:19:44 CEST »
0
grazie!!!!

proprio quello che volevo sentire!

1) non sapevo che si potesse usare le shared preferences per "contenere" piu preferenze ( pensavo che ogni shared fosse legata solo ad una preferenze!)
2)ora ho finalmente capito come assegnare ad una shared preference un contatore!



GRAZIE GRAZIE GRAZIE GRAZIE!

Offline emi

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    S III
Re:Aiuto shared_prefererences
« Risposta #9 il: 24 Ottobre 2013, 20:02:33 CEST »
+1
diciamo che un click su thanks in alto a desta ci starebbe bene  :-P
grazie!!!!

GRAZIE GRAZIE GRAZIE GRAZIE!