Autore Topic: ProgressDialog e Activity  (Letto 942 volte)

Offline antocond

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    vista
ProgressDialog e Activity
« il: 25 Giugno 2010, 18:40:19 CEST »
0
Ciao a tutti, vi spiego il mio problema.
Nel passaggio tra un'activity ed un'altra vorrei visualizzare un messaggio tramite ProgressDialog, in quanto la seconda activity svolge delle operazioni abbastanza pesanti e vorrei evitare che la grafica si blocchi in attesa che il codice per queste operazioni venga eseguito. Qualche suggerimento su come procedere?

Grazie in anticipo a tutti

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +203
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:ProgressDialog e Activity
« Risposta #1 il: 25 Giugno 2010, 19:04:29 CEST »
0
ciao antocond,

prova a dare un occhiata a questo tutorial:
[facile] Aggiornare la UI da una Thread - Android Developers Italia

e a questo post:
Passaggio da una activity ad un'altra con AlertDialog - Android Developers Italia

se hai altre domande, chiedi pure ;)

Offline antocond

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    vista
Re:ProgressDialog e Activity
« Risposta #2 il: 25 Giugno 2010, 20:03:29 CEST »
0
Ho fatto come mi hai suggerito, utilizzando AsyncTask ma non riesco a chiudere la progressDialog, mi rimane sempre in esecuzione. Ecco il codice, dove sbaglio? :-[ :-[ :-[
Codice (Java): [Seleziona]
public class myActivity extends Activity{
        private ProgressDialog dialog;
       
        private Context cont;
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                dialog = new ProgressDialog(myActivity.this);
                cont=this;
                Task task = new Task();
        task.execute();

        }
        private class Task extends AsyncTask<String,String,String> {
     
        @Override
        protected String doInBackground(String... params) {
            metodo();  
                return "done";
             
        }

       

        @Override
        protected void onPostExecute(String result) {
               
                setContentView(R.layout.main);
                dialog.dismiss();
               
               
        }
        @Override
        protected void onPreExecute(){
               
                dialog.show(cont, "Attendere Prego","Calcolo in corso");
        }

}
}
« Ultima modifica: 25 Giugno 2010, 20:17:31 CEST da JD, Reason: usate i bbcode java e xml!! XD »

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +203
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:ProgressDialog e Activity
« Risposta #3 il: 26 Giugno 2010, 03:08:13 CEST »
0
setcontentview va chiamato subito, nell oncreate. il dialog che crei/elimini non è associato ad alcun layout, nel codice che hai riportato. (findiviewbyid dov'è?...)

ciao

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:ProgressDialog e Activity
« Risposta #4 il: 26 Giugno 2010, 10:05:55 CEST »
0
In questi casi è utile leggere e riportare l'output di logcat. Sicuramente dall'errore capisci qual'è il problema.

Offline antocond

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    vista
Re:ProgressDialog e Activity
« Risposta #5 il: 26 Giugno 2010, 15:48:58 CEST »
0
Ecco come ho risolto, nel caso possa tornare utile a qualcuno. Grazie a tutti per l'aiuto.

Codice (Java): [Seleziona]
public class myActivity extends Activity{
        private ProgressDialog dialog;
        private Handler handler = new Handler();
        private Context cont;
protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
               
                mainProcessing();
       

        }
        private void mainProcessing() {
        Thread thread =  new Thread(null, doBackgroundProc, "Background2");
        thread.start();
        dialog = ProgressDialog.show(LaunchMetalli.this,    
              "Attendere prego...", "Caricamento dati in corso...", true);
   }
        private void returnRes(){
       
       
        dialog.dismiss();
   }
        private Runnable doBackgroundProc = new Runnable(){
        public void run(){
             backgroundProc();
        }
   };
   /**
    * Avvia il processo di caricamento in background
    */

   private void backgroundProc(){    
        try{
            metodo();
     } catch (Exception e) {  }
        handler.post(doReturnRes);
   }
   
   private Runnable doReturnRes = new Runnable(){
        public void run(){
             returnRes();
        }
   };
}
« Ultima modifica: 28 Giugno 2010, 11:11:35 CEST da antocond »