Autore Topic: Aggiornare activity  (Letto 5715 volte)

Offline dottorm

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One
  • Sistema operativo:
    Mac OS X
Aggiornare activity
« il: 21 Marzo 2011, 14:58:36 CET »
0
Salve a tutti, ho una activity inserita in una tabactivity nella quale è presente una sotto classe privata che implenta un task asincrono per la lettura da db che popola una listview che lancio nell'oncreate().
Come posso implementare un metodo per fare il refresh della activity in modo tale da caricare i nuovi dati dal db quando seleziono il tab associato a questa activity?

Grazie.

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Aggiornare activity
« Risposta #1 il: 21 Marzo 2011, 16:35:56 CET »
0
c'è il metodo onResume(), prova li!
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline dottorm

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One
  • Sistema operativo:
    Mac OS X
Re:Aggiornare activity
« Risposta #2 il: 27 Marzo 2011, 11:23:40 CEST »
0
Grazie mille, ho risolto con onResume. Ma ora il problema è che quando chiudo la app e la riapro mi sa che vengono richiamati sia onCreate che onResume, perchè ho i dati duplicati. Cioè se inserirsco pippo e poppo e passo da un tab all'altro ho correttamente pippo e poppo ma se invece chiudo e riapro l'applicazione ho:
pippo
pippo
poppo
poppo

in onResume uso questo codice.
Codice (Java): [Seleziona]
public void onResume(){
                super.onResume();
                new BackgroundWorker().execute();
        }

Pensavo, anche se so che non si fa in android, che posso ovviare al fatto chiudendo l'applicazione all'uscita cosi da resettare la stack e impedendo la chiamata di onResume.
Cosa ne pensi? Qualche consiglio?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Aggiornare activity
« Risposta #3 il: 27 Marzo 2011, 11:30:46 CEST »
+2
Grazie mille, ho risolto con onResume. Ma ora il problema è che quando chiudo la app e la riapro mi sa che vengono richiamati sia onCreate che onResume, perchè ho i dati duplicati.

Non son sicuro di aver capito precisamente il problema e quindi non so può risolvere il tuo problema, però dovrebbe bastare mettere il codice SOLO in OnResume, che viene comunque sempre richiamata (vedi sotto il diagramma degli stati delle Activity).

NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline dottorm

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One
  • Sistema operativo:
    Mac OS X
Re:Aggiornare activity
« Risposta #4 il: 27 Marzo 2011, 11:46:46 CEST »
0
Grazie mille funziona!!! ;-)
bastava mettere il codice di caricamento della listview in onResume adesso va alla grande..
E pensare che questo diagramma l'avevo studiato a lungo ma non mi era minimamente passato per la testa

Grazie ancora

Offline ROS

  • Utente normale
  • ***
  • Post: 196
  • Respect: +5
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 10.04
Re:Aggiornare activity
« Risposta #5 il: 05 Agosto 2011, 20:36:00 CEST »
0
A me non e' chiara un piccola cosa...:)

Se io ho due Intent: Intent1 e Intent2.

Intent2 e' richiamato da Intent1 per, esempio, modificare qualcosa... Dopo che ho finito, uso finish() e Intent2 scompare, mostrando Intent1 che ovviamente non e' stata rigenerata ma e' al stessa di prima. Quindi, in caso di modifiche, non viene ricaricata ma e' la stessa... Come fare per fare ripartire (e quindi aggiornare) Intent1?

Offline ROS

  • Utente normale
  • ***
  • Post: 196
  • Respect: +5
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 10.04
Re:Aggiornare activity
« Risposta #6 il: 23 Agosto 2011, 15:49:22 CEST »
0
A me non e' chiara un piccola cosa...:)

Se io ho due Intent: Intent1 e Intent2.

Intent2 e' richiamato da Intent1 per, esempio, modificare qualcosa... Dopo che ho finito, uso finish() e Intent2 scompare, mostrando Intent1 che ovviamente non e' stata rigenerata ma e' al stessa di prima. Quindi, in caso di modifiche, non viene ricaricata ma e' la stessa... Come fare per fare ripartire (e quindi aggiornare) Intent1?
Potreste darmi almeno qualche dritta per arrivare alla soluzione? :)

Offline Gigiuz

  • Utente normale
  • ***
  • Post: 187
  • Respect: +23
    • Google+
    • gigiuzzo81
    • Gigiuz81
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Note III
  • Play Store ID:
    GGXSoft
  • Sistema operativo:
    Windows 7 64bit, OS X (virtualized), Ubuntu
R: Aggiornare activity
« Risposta #7 il: 23 Agosto 2011, 18:04:50 CEST »
0
Potresti chiamare l'Activity 2 tramite il metodo startActivityForResult(). Una volta che hai finito nell'A2 prima chiami il metodo setResult() e poi finish(). A questo punto devi fare l'override del metodo onActivityResult() in A1 per fargli fare le operazioni che vuoi quando ritorni da un'Activity chiamata nel modo che ti ho descritto.

Purtroppo non posso farti un un'esempio adesso, visto che dallo smartphone è già abbastanza complicato scrivere quello che ho scritto. :P

Inviato dal mio Gingerbread on Sapphire usando Tapatalk
Hai bisogno di implementare un sistema di "codici seriali di sblocco" nella tua applicazione? Dai un'occhiata alla mia libreria: RemoteUnlocker

Offline n3tmaster

  • Utente junior
  • **
  • Post: 96
  • Respect: 0
    • Google+
    • lerocchi
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4 - Nexus 7 - PadFone JB
  • Sistema operativo:
    Mac OSX 10.7
Re:Aggiornare activity
« Risposta #8 il: 03 Aprile 2012, 15:25:47 CEST »
0
A me non e' chiara un piccola cosa...:)

Se io ho due Intent: Intent1 e Intent2.

Intent2 e' richiamato da Intent1 per, esempio, modificare qualcosa... Dopo che ho finito, uso finish() e Intent2 scompare, mostrando Intent1 che ovviamente non e' stata rigenerata ma e' al stessa di prima. Quindi, in caso di modifiche, non viene ricaricata ma e' la stessa... Come fare per fare ripartire (e quindi aggiornare) Intent1?

Anziché utilizzare startActivity per lanciare l'activity 2, prova ad usare startActivityForResult poi nella tua activity 1 implementa il metodo onActivityResult e li dentro fai il refresh dalla tua activity 1
Leandro Rocchi
Software Developer - Geodatabase Designer

Offline filipposapo

  • Utente junior
  • **
  • Post: 135
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Tablet Samsung Note 10.1
  • Sistema operativo:
    Windows 8
Re:Aggiornare activity
« Risposta #9 il: 18 Dicembre 2013, 11:10:20 CET »
0
Scusate se intervengo nella discussione ma la trovo molto interessante; e se si volesse  un refresh automatico magari temporizzato?

Offline °Agodie°

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S3 Neo
  • Sistema operativo:
    Windows 8.1
Re:Aggiornare activity
« Risposta #10 il: 17 Maggio 2014, 18:36:50 CEST »
0
Magari si potrebbe impostare un handler che richiama un runnable e nel run fai partire l'intent per il refresh.
Tipo:
Codice (Java): [Seleziona]
Handler myHandler = new Handler()
    {
        @Override
        public void handleMessage(Message msg)
        {
                  Log.i("Handler",msg.toString());


        }
    };

private Runnable runnable = new Runnable()
    {


           
       @Override
            public void run()
            {
                        //qua faccio partire l'intent      
                  handler.postDelayed( this, tempo in millisecondi );
            }
    };
Poi crei dove vuoi (penso sia adeguato l'onResume) il tuo handler:
Codice (Java): [Seleziona]
myHandler.postDelayed(runnable, tempo in millis );Bisogna poi gestire la sitruzione dell'handler alla onPause richiamando myHandler.removeCallbacks(runnable);
Anche se secondo me così è un pò uno spreco di risorse, utilizzando l'handler e il run sarebbe meglio esguire un intent che verifica se all'interno del db ci sia stata una modifica e se questa ipotesi è verificata far finire il tuo intent impostando un flag con setResult.
Successivamente ritornando all'activity/fragment principale in base al flag faccio partire il refresh.
Spero di non aver detto stupidaggini :P