Autore Topic: onPostExecute() non si avvia  (Letto 1066 volte)

Offline Andrea°Dev

  • Nuovo arrivato
  • *
  • Post: 26
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Sony XPeria S
  • Sistema operativo:
    Windows 7
onPostExecute() non si avvia
« il: 10 Giugno 2012, 09:58:52 CEST »
0
Salve community!
Ho un problema:
ho creato un asynktask per la connessione a una pagina php... il doInBackground() funziona corettamente, ma alla dopo la sua conclusione non si avvia onPostExecute().
Come risolvo?

Grazie in anticipo a tutti!

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:onPostExecute() non si avvia
« Risposta #1 il: 10 Giugno 2012, 10:04:32 CEST »
0
Supponendo tu abbia già verificato che l'AsyncTask non arriva alla onPostExecute, una ragione potrebbe essere il fatto che non esca dalla doInBackground() per qualche ragione.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Andrea°Dev

  • Nuovo arrivato
  • *
  • Post: 26
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Sony XPeria S
  • Sistema operativo:
    Windows 7
Re:onPostExecute() non si avvia
« Risposta #2 il: 10 Giugno 2012, 10:23:11 CEST »
0
Non esce dalla doInBackground(). ti posto il codice
Codice (Java): [Seleziona]
public class Astsk extends AsyncTask<String,Void,Integer> {

                protected Integer doInBackground(String ...args) {
                        int Risposta1=3;
                        final String user=args[0];
                        final String pwd=args[1];
                        final String url=args[2];
                        Connecter conn=new Connecter();
                        try {
                                Risposta1=conn.Connect(user, pwd, url);
                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                        Log.e("Ritorno..", ""+Risposta1);
                return Risposta1;
               
                }
                protected void onPostExecute(int result){
                        if(result==1){
                                Intent intent= new Intent(App.mcontx,principale.class);
                                App.mcontx.startActivity(intent);
                        }
                        else if(result==0){
                                   Toast toast= Toast.makeText(App.mcontx,"Username o password Errati",Toast.LENGTH_SHORT);                                toast.show();
                                   toast.show();}
                        else{
                                   Toast toast= Toast.makeText(App.mcontx,"Errore di connessione",Toast.LENGTH_SHORT);                             toast.show();
                           toast.show();
                           }
                        }
            }  

il ritorno è 1 ed è corretto.

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:onPostExecute() non si avvia
« Risposta #3 il: 10 Giugno 2012, 11:21:32 CEST »
0
Citazione
il ritorno è 1 ed è corretto.
Ma se non esce dalla doInBackground(), come fai a sapere che il ritorno è 1?
Hai debuggato con un breakpoint nell'onPostExecute()?

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
Re:onPostExecute() non si avvia
« Risposta #4 il: 10 Giugno 2012, 11:25:33 CEST »
0
Nel postExecute ci si aspetta un OGGETTO Integer, non semplicemente un "int". Sebbene Java disponga di auto-boxing/unboxing, nel "micro-cosmo" dell'AsyncTask (c'è davvero un mondo lì dentro :P ) è importante passare esattamente gli stessi tipi dichiarati nel template dell'Async.
Hai bisogno di implementare un sistema di "codici seriali di sblocco" nella tua applicazione? Dai un'occhiata alla mia libreria: RemoteUnlocker

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:onPostExecute() non si avvia
« Risposta #5 il: 10 Giugno 2012, 12:33:40 CEST »
0
Per non ricadere nella stessa situazione basta aiutare il compilatore. Con un metodo dichiarato in questo modo con una annotazione:

Codice (Java): [Seleziona]
@Override
protected void onPostExecute(int result){

...

}

viene segnalato l'errore.
adb logcat | tee /tmp/logcat | grep TAG