Autore Topic: Come visualizzare loader circolare  (Letto 960 volte)

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Come visualizzare loader circolare
« il: 18 Novembre 2010, 09:40:53 CET »
0
Buogiorno
nella mia app ho una lista di stringhe ed un bottone refresh
quando viene premuto questo bottone, parte il lavoro in background di un AsyncTask per leggere i dati da un db ed aggiornare la lista di stringhe
Mentre viene eseguita questa operazione, della durata di circa 4 secondi, volevo visualizzare, sopra al bottone refresh, la gif del circular loader (la stessa che visualizza firefox quando si aggiorna)  che NON SIA BLOCCANTE, cioè l'utente può anche decidere di cambiare schermata mentre in background viene fatto l'aggiornamento
Ho provato a impostare come background del bottone refresh la mia gif, ma non gira, cioè non fa l'animazione, allora ho cambiato strada, pPenso di dover visualizzare una progress bar sopra il bottone di refresh in un nuovo thread, ma non so scrivere il codice, ho provato questo:
Codice (Java): [Seleziona]
new Thread(new Runnable() {
                    public void run() {
                        progressDialog = ProgressDialog.show(MyApp.this,
                                "title","loading..." , true);

                           
                        }
                    }
                ).start();

Poi quando finisce l'asynctask faccio questo

Codice (Java): [Seleziona]
progressDialog.dismiss();
Quando eseguo questo codice mi viene restituito il messaggio:
11-18 08:27:46.903: ERROR/AndroidRuntime(399): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Come visualizzare loader circolare
« Risposta #1 il: 18 Novembre 2010, 12:38:47 CET »
0
Se vuoi mettere nela condizione l'utente di cambaire schermata mentre viene fatta l'operazione credo che eseguire un AsyncTask non vada bene perchè potenzialmente la tua activity mentre è in background può venir distrutta. Direi che dovresti spostare tutto in un Service.

Comunque tu hai detto giusto ma hai implementato sbagliato.
Ti serve una ProgressBar che è diversa dal ProgressDialog.

ProgressBar | Android Developers