Autore Topic: alert dialog e progress dialog  (Letto 697 volte)

Offline sdbd

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc wildfire
alert dialog e progress dialog
« il: 12 Settembre 2011, 17:10:17 CEST »
0
Salve ragazzi,
ho un problema:
creo un alert dialog e se l'utente preme su un bottone avviene l'upload di un immagine a un server, nel frattempo vorrei visualizzare un progress dialog.

Le sto provando tutte ma non riesco!
Grazie in anticipo dell'aiuto!

Codice (Java): [Seleziona]
 AlertDialog.Builder adb=new AlertDialog.Builder(CameraView.this);
                         adb.setTitle("Idee?!");
                         adb.setMessage("Vuoi inviare a CST la foto?");                        
                                     
                         adb.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int whichButton) {
                           
                                       
                                         try {
                                                 
                                             //qui vorrei visualizzare il progress dialog
                                                Principale.InvioImmagine("",file);
                                                //qui chiuderlo
                                                } catch (Exception e) {
                                                        // TODO Auto-generated catch block
                                                        e.printStackTrace();
                                                }      
                                    }
                               });
                             
                         adb.setNegativeButton("No",null);
                         adb.show();

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:alert dialog e progress dialog
« Risposta #1 il: 13 Settembre 2011, 10:33:55 CEST »
0
Oltre al codice dovresti anche dire qual'è il problema!
Stai facendo l'invio del file in un thread separato?

Offline sdbd

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc wildfire
Re:alert dialog e progress dialog
« Risposta #2 il: 13 Settembre 2011, 10:35:34 CEST »
0
Ciao Ricky, si l'upload avviene in un thread separato, il problema è che non riesco a visualizzare il progressDialog perchè mentre invia il file rimane sulla schermata dell'alert!

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:alert dialog e progress dialog
« Risposta #3 il: 13 Settembre 2011, 10:40:10 CEST »
0
Ciao Ricky, si l'upload avviene in un thread separato, il problema è che non riesco a visualizzare il progressDialog perchè mentre invia il file rimane sulla schermata dell'alert!

Se ti va di postare il codice del metodo Principale.InvioImmagine potremmo aiutarti a rifattorizzare il tutto per farli funzionare come ti serve ;)

Offline sdbd

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc wildfire
Re:alert dialog e progress dialog
« Risposta #4 il: 13 Settembre 2011, 10:48:24 CEST »
0
Certo il fatto è che invio immagine viene fatto in una classe che gestisce tutte le connessioni, cmq eccola qua:



Codice (Java): [Seleziona]
public static EsitoUpload InvioImmagine(String cookie,String percorsoFoto) throws Exception {
        EsitoLogin esitoLog=Principale.Login(nick,pass);
        EsitoUpload esito=new EsitoUpload();
        HttpClient httpclient = new DefaultHttpClient();
        try {
            HttpPost httppost = new HttpPost("indirizzo_server");
           
            String d=esitoLog.getResult();
            httppost.setHeader("Cookie", esitoLog.getCookie());//cookie preso da my application

            FileBody bin = new FileBody(new File(percorsoFoto),"image/jpeg");//ci sarà il percorso del file che dobbiamo inviare        
            MultipartEntity reqEntity = new MultipartEntity();
            reqEntity.addPart("fileImmagine", bin);
           
            httppost.setEntity(reqEntity);
            HttpResponse response = httpclient.execute(httppost);
            Gson gson = new Gson();
            //salvo i dati nella classe
            esito = gson.fromJson(EntityUtils.toString(response.getEntity()), EsitoUpload.class);
       
        } finally {
            try { httpclient.getConnectionManager().shutdown(); } catch (Exception ignore) {}
        }
                return esito;
    }
   
}      

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:alert dialog e progress dialog
« Risposta #5 il: 13 Settembre 2011, 11:00:17 CEST »
0
Non vedo che avvii nuovi thread li dentro...

A questo punto ti consiglio di utilizzare un AsyncTask per fare questo lavoro:

Codice (Java): [Seleziona]
class InvioImmagineTask extends AsyncTask<String, Void, Void> {
     
        ProgressDialog pd;
       
        protected void onPreExecute (){
                //crei il ProgressDialog e lo assegni a pd e lo mostri
        }
       
        protected Long doInBackground(String... files) {
                Principale.InvioImmagine("",files[0]);
    }

    protected void onPostExecute(Long result){
         pd.dismiss();
    }
}

poi modifichi l'altro codice in questo modo:
Codice (Java): [Seleziona]
 AlertDialog.Builder adb=new AlertDialog.Builder(CameraView.this);
                         adb.setTitle("Idee?!");
                         adb.setMessage("Vuoi inviare a CST la foto?");                        
                                     
                         adb.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int whichButton) {
                           
                                       
                                         try {
                                                 
                                             dialog.dismiss();
                                             new InvioImmagineTask().execute(file);
                                                } catch (Exception e) {
                                                        // TODO Auto-generated catch block
                                                        e.printStackTrace();
                                                }      
                                    }
                               });
                             
                         adb.setNegativeButton("No",null);
                         adb.show();


Offline sdbd

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc wildfire
Re:alert dialog e progress dialog
« Risposta #6 il: 13 Settembre 2011, 11:11:01 CEST »
0
Grazie Ricky, ora ci provo!
Scusami ma sono ancora nuovo di Android!