Autore Topic: Metodo notifyChanged  (Letto 1076 volte)

Offline androider

  • Translate Team
  • Utente normale
  • ***
  • Post: 261
  • In campo come nella vita.
  • Respect: +1
    • andreadannibale
    • andreadevil
    • Mostra profilo
    • AnAndroider
  • Dispositivo Android:
    Nexus One
  • Play Store ID:
    AnAnApps
  • Sistema operativo:
    Mac Os X Snow Leopard
Metodo notifyChanged
« il: 29 Ottobre 2010, 13:43:23 CEST »
0
Ho visto dalla documentazione che le preferences hanno un metodo void notifyChanged(); dovrebbe servire a notificare quando le preferenze vengono modificate se non sbaglio..il problema è che non capisco perchè non mi fa richiamare questo metodo sul mio oggetto SharedPreferences :-o
Se i cosiddetti "migliori" di noi avessero il coraggio di
sottovalutarsi almeno un po' vivremmo in un mondo infinitamente migliore.

In ogni cAso nessun rimorso.

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Metodo notifyChanged
« Risposta #1 il: 29 Ottobre 2010, 13:50:37 CEST »
0
Preference e SharedPreference sono due oggetti totalmente diversi... è ovvio che non puoi richiamare quel metodo!

Offline androider

  • Translate Team
  • Utente normale
  • ***
  • Post: 261
  • In campo come nella vita.
  • Respect: +1
    • andreadannibale
    • andreadevil
    • Mostra profilo
    • AnAndroider
  • Dispositivo Android:
    Nexus One
  • Play Store ID:
    AnAnApps
  • Sistema operativo:
    Mac Os X Snow Leopard
Re:Metodo notifyChanged
« Risposta #2 il: 29 Ottobre 2010, 13:52:38 CEST »
0
quindi su sharedPreference qual'è il metodo per notificare il cambiamento? perchè mi accade proprio che modificando le preferenze e ritornando all'activity che le mostra con il tasto back queste non si modifichino...
Se i cosiddetti "migliori" di noi avessero il coraggio di
sottovalutarsi almeno un po' vivremmo in un mondo infinitamente migliore.

In ogni cAso nessun rimorso.

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Metodo notifyChanged
« Risposta #3 il: 29 Ottobre 2010, 14:13:59 CEST »
0
Le SharedPreference le modifichi tu manualmente, quindi sei automaticamente notificato!  o_O

Mi sa che ti stai confondendo con la PreferenceActivity... in quel caso hai un particolare tipo di SharedPreference che le recuperi da PreferenceManager.getDefaultSharedPreferences(Context context).

Se non è questo, non ho capito cosa intenti.

Offline androider

  • Translate Team
  • Utente normale
  • ***
  • Post: 261
  • In campo come nella vita.
  • Respect: +1
    • andreadannibale
    • andreadevil
    • Mostra profilo
    • AnAndroider
  • Dispositivo Android:
    Nexus One
  • Play Store ID:
    AnAnApps
  • Sistema operativo:
    Mac Os X Snow Leopard
Re:Metodo notifyChanged
« Risposta #4 il: 29 Ottobre 2010, 14:16:45 CEST »
0
Cioè non è che devo notificare all'utente che le ha cambiate..ti spiego la situazione.

Ho un activity che mostra alcuni dati presi dalle preferenze; se vado a modificarle e ritorno con back a quella activity la modifica non avviene istantaneamente. Per vedere la modifica devo riavviare l'activity
Se i cosiddetti "migliori" di noi avessero il coraggio di
sottovalutarsi almeno un po' vivremmo in un mondo infinitamente migliore.

In ogni cAso nessun rimorso.

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Metodo notifyChanged
« Risposta #5 il: 29 Ottobre 2010, 14:41:39 CEST »
0
Se è cosi sbagli qualche cosa nel codice.

La modifica è sempre istantanea.

Offline androider

  • Translate Team
  • Utente normale
  • ***
  • Post: 261
  • In campo come nella vita.
  • Respect: +1
    • andreadannibale
    • andreadevil
    • Mostra profilo
    • AnAndroider
  • Dispositivo Android:
    Nexus One
  • Play Store ID:
    AnAnApps
  • Sistema operativo:
    Mac Os X Snow Leopard
Re:Metodo notifyChanged
« Risposta #6 il: 29 Ottobre 2010, 14:44:08 CEST »
0
Il codice è semplicemente questo:
Codice (Java): [Seleziona]
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
               
                nameTv.append(prefs.getString("name", "").toUpperCase());
                etaTv.append(prefs.getString("eta", "").toUpperCase());
                hTv.append(prefs.getString("altezza", "").toUpperCase());
                pesoTv.append(prefs.getString("peso", "").toUpperCase());
                teamAct.append(prefs.getString("textData", "").toUpperCase());
                roleTv.append(prefs.getString("role", "").toUpperCase());

editBut.setOnClickListener(new View.OnClickListener(){

                        @Override
                        public void onClick(View v) {
                                       
                                launchPref();
                                                 
                                }}      
                        );
               

con il bottone che serve ad andare sull'activity per modificare le preference
Se i cosiddetti "migliori" di noi avessero il coraggio di
sottovalutarsi almeno un po' vivremmo in un mondo infinitamente migliore.

In ogni cAso nessun rimorso.

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Metodo notifyChanged
« Risposta #7 il: 29 Ottobre 2010, 15:00:48 CEST »
0
ehm... e quanto torni indietro ti aspetti che le variabili si siano aggiornate da sole immagino...  :-\

Ovviamente troverai aggiornato prefs.getString("name", ""), non nameTv!

Offline androider

  • Translate Team
  • Utente normale
  • ***
  • Post: 261
  • In campo come nella vita.
  • Respect: +1
    • andreadannibale
    • andreadevil
    • Mostra profilo
    • AnAndroider
  • Dispositivo Android:
    Nexus One
  • Play Store ID:
    AnAnApps
  • Sistema operativo:
    Mac Os X Snow Leopard
Re:Metodo notifyChanged
« Risposta #8 il: 29 Ottobre 2010, 15:02:29 CEST »
0
e infatti è proprio questo..chiedevo come si può aggiornare??
Se i cosiddetti "migliori" di noi avessero il coraggio di
sottovalutarsi almeno un po' vivremmo in un mondo infinitamente migliore.

In ogni cAso nessun rimorso.

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Metodo notifyChanged
« Risposta #9 il: 29 Ottobre 2010, 15:05:50 CEST »
0
Chiamando nuovamente nameTv.append(prefs.getString("name", "").toUpperCase()); al ritorno dell'activity!  o_O

Offline androider

  • Translate Team
  • Utente normale
  • ***
  • Post: 261
  • In campo come nella vita.
  • Respect: +1
    • andreadannibale
    • andreadevil
    • Mostra profilo
    • AnAndroider
  • Dispositivo Android:
    Nexus One
  • Play Store ID:
    AnAnApps
  • Sistema operativo:
    Mac Os X Snow Leopard
Re:Metodo notifyChanged
« Risposta #10 il: 29 Ottobre 2010, 15:08:15 CEST »
0
praticamente all'evento della pressione del tasto back devo richiamare i textview.append
Ma questo evento come si richiama? scusa ma mi sto impicciando un bel po..se riuscissi da solo veramente non starei qui a rompere
Se i cosiddetti "migliori" di noi avessero il coraggio di
sottovalutarsi almeno un po' vivremmo in un mondo infinitamente migliore.

In ogni cAso nessun rimorso.

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Metodo notifyChanged
« Risposta #11 il: 29 Ottobre 2010, 15:32:15 CEST »
0
Quando richiami l'activity che mostra i dati da modificare, prova a richiamarla usando il metodo startActivityForResult(....), anziché semplicemente startActivity(...).
In questo modo ti aspetti che l'activity restituisca un valore al suo ritorno, o quantomeno notifichi la cosa.
Quando finisci di modificare i dati, setti un valore di result con setResult(...) e poi termini l'activity con finish().

Nell'activity chiamante implementa onActivityResult(...), che viene invocato quando l'activity chiamata torna un risultato.

Non so se è il migliore dei modi, ma dovrebbe funzionare.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Metodo notifyChanged
« Risposta #12 il: 29 Ottobre 2010, 15:48:49 CEST »
0
Se invece devi aggiornare quei dati ogni volta che l'activity ritorna visibile, allora usa il metodo onRestart (o onResume...)

Offline androider

  • Translate Team
  • Utente normale
  • ***
  • Post: 261
  • In campo come nella vita.
  • Respect: +1
    • andreadannibale
    • andreadevil
    • Mostra profilo
    • AnAndroider
  • Dispositivo Android:
    Nexus One
  • Play Store ID:
    AnAnApps
  • Sistema operativo:
    Mac Os X Snow Leopard
Re:Metodo notifyChanged
« Risposta #13 il: 29 Ottobre 2010, 15:56:47 CEST »
0
L'onRestart() sembra fare piu al caso mio. Però sto provando a metterlo in vari punti ma non mi funziona..
Se i cosiddetti "migliori" di noi avessero il coraggio di
sottovalutarsi almeno un po' vivremmo in un mondo infinitamente migliore.

In ogni cAso nessun rimorso.

Offline androider

  • Translate Team
  • Utente normale
  • ***
  • Post: 261
  • In campo come nella vita.
  • Respect: +1
    • andreadannibale
    • andreadevil
    • Mostra profilo
    • AnAndroider
  • Dispositivo Android:
    Nexus One
  • Play Store ID:
    AnAnApps
  • Sistema operativo:
    Mac Os X Snow Leopard
Re:Metodo notifyChanged
« Risposta #14 il: 30 Ottobre 2010, 20:01:37 CEST »
0
Allora ho provato a mettere l'onRestart() subito dopo il metodo che chiama l'activity delle preference, in modo tale da far ripartire l'activity chiamante quando vengono aperte le preference, ma anche in questo modo modifico le preference, ritorno indietro e nulla. Invariato. Invece mettendo finish() va un pò meglio, in quanto quando vado sulle preference, modifico e poi quando faccio back mi ritorna praticamente al menu iniziale, però per lo meno cosi si aggiorna..
Se i cosiddetti "migliori" di noi avessero il coraggio di
sottovalutarsi almeno un po' vivremmo in un mondo infinitamente migliore.

In ogni cAso nessun rimorso.