IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Traitement des ProgressDialog


Sujet :

Android

  1. #41
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Il y a deux erreurs....

    1. L'appel HTTP ne renvoit pas de JSON mais du HTML
    (un copy/paste du logcat aurait permit de copier ici l'erreur, mais d'une image, c'est plus dur)...
    D'ailleurs:
    POST sur http://www.test.com/test.php avec codepostal en parametre... ca veut dire (à priori) que tu va modififier des données coté serveur.
    Mais dans tous les cas, ce truc renvoit du HTML.

    2. Appel du Toast dans le doInBackground... il vaut mieux l'appeler dans le onPostExecute

    3. il y a un probleme sur les contexte/view pour le progress dialog... mais je n'ai pas bien regardé le code en détail
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  2. #42
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    J'ai pas compris ta première remarque. De toutes mes requettes HTTP Post je reçois un JSON, pourquoi sa changerai avec les AsyncTask ?

    Je passe une codePostal car après dans ma requette je fais where codepostal = codePostal (celui récupéré du JAVA).

  3. #43
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    J'en sais rien.... C'est ce que dit le logcat (mentirait-il ?):

    Value <html> of type java.lang.string can't be converted to JSONObject
    RestoListe.java, ligne 102


    la seconde erreur, est "can't create handler inside a non prepared thread", c'est qu'on utilise un truc asynchrone (toast, AsyncTask) à l'interieur d'un thread non UI !


    Pour la dernière, y a un probleme de context / window / view....
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  4. #44
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    la ligne 102 est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    json= new JSONObject(EntityUtils.toString(response.getEntity()));
    Je ne comprend pas pourquoi ça me met cette erreur vraiment, j'ai pas changé mon fichier PHP entre le moment ou je géré cela dans le thread graphique et maintenant ou j'essai de gérer cela avec les AsyncTask

    EDIT:

    Erreur corrigé, s'était un simple problème d'URL, mais il me reste toujours une erreur qui est la suivante:



    La ligne 137 étant la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    list.setAdapter(adapterProut);
    La ligne 123 étant la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RestoListe.this.onBigCalculResult(result);
    Et voici le bout du code ou elles sont intégré:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    class BigCalcul extends AsyncTask<NameValuePair,Void,JSONArray>
        {
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                RestoListe.this.progressDialog.setMessage("Chargement en cours");
                RestoListe.this.progressDialog.show();
            }
     
            @Override
            protected JSONArray doInBackground(NameValuePair ... params) {
                 ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                 if (params != null) {
                     for (NameValuePair p : params) nameValuePairs.add(p);
                 }
     
                 try {
    	                HttpClient httpclient = new DefaultHttpClient();
    	                String url = "http://www.test.com/test.php";
    	                HttpPost httppost = new HttpPost(url);
    	                nameValuePairs.add(new BasicNameValuePair("codepostal", codePostal));
    	    		    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    	                HttpResponse response = httpclient.execute(httppost);
    	                json= new JSONObject(EntityUtils.toString(response.getEntity()));
     
    	                jArray1 = json.getJSONArray("requete1");
     
     
     
    	            } catch (Exception ex) {
    	                // signaler l'erreur
    	                Log.e("MyAppTag","Erreur réception données", ex);
    	                Toast.makeText(getBaseContext(),ex.getLocalizedMessage(),Toast.LENGTH_LONG).show();
    	                // ou throw new Exception(); si il faut signaler l'erreur à l'appelant !
    	            }		
     
    			return jArray1;
     
            }
     
            @Override
            protected void onPostExecute(JSONArray result) {
            	RestoListe.this.progressDialog.dismiss();
                if (result != null)
                	RestoListe.this.onBigCalculResult(result);
            }
        }
     
        public void onBigCalculResult(JSONArray result) {
    		// TODO Auto-generated method stub
     
    		//Création et initialisation de l'Adapter pour les personnes
            AdapterPersoLivraison adapterProut = new AdapterPersoLivraison(this, result);
     
            //Récupération du composant ListView
            list = (ListView)findViewById(R.id.listResto);
     
            //Initialisation de la liste avec les données
            list.setAdapter(adapterProut);
     
     
        }
     
        public void startBigCalcul(String codePostal) {
            BigCalcul back = new BigCalcul();
            back.execute(new BasicNameValuePair("codepostal",codePostal));
        }

  5. #45
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Pourquoi tu ne fais pas simplement un copy/paste du logcat ?

    Enfin bon... pas la peine de chercher loin....

    NPE = déréférencement d'un pointeur null (accès à un membre [fonction/variable/...] d'un objet 'null')
    RestoListe.java, ligne 137:
    list.setAdapter(adapterProut);

    Ou fait-on un déréférencement ? "list.setAdapter" ....
    donc .... "list" est null !

    le setContentView a bien été fait ? il y a bien un R.id.listResto dans le layout ?
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  6. #46
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    j'ai ça dans le onCraete():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.listeresto);
     
             if (objetbunble != null && objetbunble.containsKey("BoutonLivraison"))
             {
     
                          BigCalcul calcul=new BigCalcul();
    		      calcul.execute();
              }
    }
    et donc après appel de cette classe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    class BigCalcul extends AsyncTask<NameValuePair,Void,JSONArray>
        {
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                RestoListe.this.progressDialog.setMessage("Chargement en cours");
                RestoListe.this.progressDialog.show();
            }
     
            @Override
            protected JSONArray doInBackground(NameValuePair ... params) {
                 ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                 if (params != null) {
                     for (NameValuePair p : params) nameValuePairs.add(p);
                 }
     
                 try {
    	                HttpClient httpclient = new DefaultHttpClient();
    	                String url = "http://www.test.com/test.php";
    	                HttpPost httppost = new HttpPost(url);
    	                nameValuePairs.add(new BasicNameValuePair("codepostal", codePostal));
    	    		    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    	                HttpResponse response = httpclient.execute(httppost);
    	                json= new JSONObject(EntityUtils.toString(response.getEntity()));
     
    	                jArray1 = json.getJSONArray("requete1");
     
     
     
    	            } catch (Exception ex) {
    	                // signaler l'erreur
    	                Log.e("MyAppTag","Erreur réception données", ex);
    	                Toast.makeText(getBaseContext(),ex.getLocalizedMessage(),Toast.LENGTH_LONG).show();
    	                // ou throw new Exception(); si il faut signaler l'erreur à l'appelant !
    	            }		
     
    			return jArray1;
     
            }
     
            @Override
            protected void onPostExecute(JSONArray result) {
            	RestoListe.this.progressDialog.dismiss();
                if (result != null)
                	RestoListe.this.onBigCalculResult(result);
            }
        }
     
    	public void onBigCalculResult(JSONArray result) {
    		// TODO Auto-generated method stub
     
    		//Création et initialisation de l'Adapter pour les personnes
            AdapterPersoLivraison adapterProut = new AdapterPersoLivraison(this, result);
     
            //Récupération du composant ListView
            list = (ListView)findViewById(R.id.listResto);
     
            //Initialisation de la liste avec les données
            list.setAdapter(adapterProut);
     
    	}
     
        public void startBigCalcul(String codePostal) {
            BigCalcul back = new BigCalcul();
            back.execute(new BasicNameValuePair("codepostal",codePostal));
        }
    J'ai donc bien tous ce que tu m'as dit je pense

    EDIT:

    J'ai réussi à faire fonctionner quand le jArray n'est pas null, cependant s'il est null j'ai une exception.

  7. #47
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    j'ai même essayer de gérer le cas ou le JSONArray est null je fais autre chose (j'affiche un message d'erreur) mais ça ne fonctionne pas. Je comprend pas pourquoi ça fonctionne si le JSONArray contient quelque chose et que ça fonctionne pas si il est vide.

  8. #48
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    Voici mon logcat si ça peut aider quelqu'un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    08-27 11:26:03.335: E/AndroidRuntime(4449): FATAL EXCEPTION: AsyncTask #1
    08-27 11:26:03.335: E/AndroidRuntime(4449): java.lang.RuntimeException: An error occured while executing doInBackground()
    08-27 11:26:03.335: E/AndroidRuntime(4449): 	at android.os.AsyncTask$3.done(AsyncTask.java:278)
    08-27 11:26:03.335: E/AndroidRuntime(4449): 	at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
    08-27 11:26:03.335: E/AndroidRuntime(4449): 	at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
    08-27 11:26:03.335: E/AndroidRuntime(4449): 	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
    08-27 11:26:03.335: E/AndroidRuntime(4449): 	at java.util.concurrent.FutureTask.run(FutureTask.java:137)
    08-27 11:26:03.335: E/AndroidRuntime(4449): 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
    08-27 11:26:03.335: E/AndroidRuntime(4449): 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
    08-27 11:26:03.335: E/AndroidRuntime(4449): 	at java.lang.Thread.run(Thread.java:864)
    08-27 11:26:03.335: E/AndroidRuntime(4449): Caused by: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
    08-27 11:26:03.335: E/AndroidRuntime(4449): 	at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4132)
    08-27 11:26:03.335: E/AndroidRuntime(4449): 	at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:723)
    08-27 11:26:03.335: E/AndroidRuntime(4449): 	at android.view.View.requestLayout(View.java:12957)
    08-27 11:26:03.335: E/AndroidRuntime(4449): 	at android.view.View.requestLayout(View.java:12957)
    08-27 11:26:03.335: E/AndroidRuntime(4449): 	at android.view.View.requestLayout(View.java:12957)
    08-27 11:26:03.335: E/AndroidRuntime(4449): 	at android.view.ViewGroup.removeAllViews(ViewGroup.java:3681)
    08-27 11:26:03.335: E/AndroidRuntime(4449): 	at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:267)
    08-27 11:26:03.335: E/AndroidRuntime(4449): 	at android.app.Activity.setContentView(Activity.java:1885)
    08-27 11:26:03.335: E/AndroidRuntime(4449): 	at com.restomaniak.alpha.RestoListe.zeroResultatLivraison(RestoListe.java:463)
    08-27 11:26:03.335: E/AndroidRuntime(4449): 	at com.restomaniak.alpha.RestoListe$BigCalcul.doInBackground(RestoListe.java:113)
    08-27 11:26:03.335: E/AndroidRuntime(4449): 	at com.restomaniak.alpha.RestoListe$BigCalcul.doInBackground(RestoListe.java:1)
    08-27 11:26:03.335: E/AndroidRuntime(4449): 	at android.os.AsyncTask$2.call(AsyncTask.java:264)
    08-27 11:26:03.335: E/AndroidRuntime(4449): 	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
    08-27 11:26:03.335: E/AndroidRuntime(4449): 	... 4 more
    08-27 11:26:03.586: I/MapActivity(4449): Handling network change notification:CONNECTED
    08-27 11:26:03.596: D/memalloc(4449): /dev/pmem: Unmapping buffer base:0x5515a000 size:9736192 offset:9441280
    08-27 11:26:03.596: D/memalloc(4449): /dev/pmem: Unmapping buffer base:0x531f3000 size:16637952 offset:16343040
    08-27 11:26:03.606: D/memalloc(4449): /dev/pmem: Unmapping buffer base:0x55ae6000 size:16343040 offset:14254080
    08-27 11:26:03.606: D/memalloc(4449): /dev/pmem: Unmapping buffer base:0x52288000 size:14254080 offset:12165120
    08-27 11:26:03.626: E/WindowManager(4449): Activity com.restomaniak.alpha.RestoListe has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@40e533e0 that was originally added here
    08-27 11:26:03.626: E/WindowManager(4449): android.view.WindowLeaked: Activity com.restomaniak.alpha.RestoListe has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@40e533e0 that was originally added here
    08-27 11:26:03.626: E/WindowManager(4449): 	at android.view.ViewRootImpl.<init>(ViewRootImpl.java:352)
    08-27 11:26:03.626: E/WindowManager(4449): 	at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:373)
    08-27 11:26:03.626: E/WindowManager(4449): 	at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:321)
    08-27 11:26:03.626: E/WindowManager(4449): 	at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:152)
    08-27 11:26:03.626: E/WindowManager(4449): 	at android.view.Window$LocalWindowManager.addView(Window.java:541)
    08-27 11:26:03.626: E/WindowManager(4449): 	at android.app.Dialog.show(Dialog.java:301)
    08-27 11:26:03.626: E/WindowManager(4449): 	at com.restomaniak.alpha.RestoListe$BigCalcul.onPreExecute(RestoListe.java:87)
    08-27 11:26:03.626: E/WindowManager(4449): 	at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:561)
    08-27 11:26:03.626: E/WindowManager(4449): 	at android.os.AsyncTask.execute(AsyncTask.java:511)
    08-27 11:26:03.626: E/WindowManager(4449): 	at com.restomaniak.alpha.RestoListe.onCreate(RestoListe.java:315)
    08-27 11:26:03.626: E/WindowManager(4449): 	at android.app.Activity.performCreate(Activity.java:4531)
    08-27 11:26:03.626: E/WindowManager(4449): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1071)
    08-27 11:26:03.626: E/WindowManager(4449): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2150)
    08-27 11:26:03.626: E/WindowManager(4449): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2229)
    08-27 11:26:03.626: E/WindowManager(4449): 	at android.app.ActivityThread.access$600(ActivityThread.java:139)
    08-27 11:26:03.626: E/WindowManager(4449): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1261)
    08-27 11:26:03.626: E/WindowManager(4449): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    08-27 11:26:03.626: E/WindowManager(4449): 	at android.os.Looper.loop(Looper.java:154)
    08-27 11:26:03.626: E/WindowManager(4449): 	at android.app.ActivityThread.main(ActivityThread.java:4945)
    08-27 11:26:03.626: E/WindowManager(4449): 	at java.lang.reflect.Method.invokeNative(Native Method)
    08-27 11:26:03.626: E/WindowManager(4449): 	at java.lang.reflect.Method.invoke(Method.java:511)
    08-27 11:26:03.626: E/WindowManager(4449): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    08-27 11:26:03.626: E/WindowManager(4449): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    08-27 11:26:03.626: E/WindowManager(4449): 	at dalvik.system.NativeStart.main(Native Method)
    Je ne comprend donc vraiment pas pourquoi j'ai cette erreur quand le JSONArray est vide. J'y ai passé le week-end et toujours pas moyen de trouver la faille. Je suis sur que c'est un truc tout con encore une fois en plus. Etant sans solution c'est pour ça que je me permets de reposter après mon message, de plus j'apporte de l'information qui est le logcat.

    Merci

  9. #49
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Tu appelles ton code dans le doInBackground... bouge l'appel dans le onPostExecute et tout ira bien....

    Même le Toast devrait être fait dans le onPostExecute !
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  10. #50
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    de quel code parle tu ?

  11. #51
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Je parle des appels à l'activité dans le doInBackground.... (ce qui inclut le Toast)

    08-27 11:26:03.335: E/AndroidRuntime(4449): at com.restomaniak.alpha.RestoListe.zeroResultatLivraison(RestoListe.java:463)
    08-27 11:26:03.335: E/AndroidRuntime(4449): at com.restomaniak.alpha.RestoListe$BigCalcul.doInBackground(RestoListe.java:113)

    RestoListe.java ligne 113, appel à RestoList.zeroResultatLivraison
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  12. #52
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    je ne comprend pas voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    class BigCalcul extends AsyncTask<NameValuePair,Void,JSONArray>
        {
     
     
    		@Override
            protected void onPreExecute() {
                super.onPreExecute();
                RestoListe.this.progressDialog.setMessage("Chargement en cours");
                RestoListe.this.progressDialog.show();
            }
     
            @Override
            protected JSONArray doInBackground(NameValuePair ... params) {
                 ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                 if (params != null) {
                     for (NameValuePair p : params) nameValuePairs.add(p);
                 }
     
                 try {
    	                HttpClient httpclient = new DefaultHttpClient();
    	                String url = "http://www.test.com/mobile/test.php";
    	                HttpPost httppost = new HttpPost(url);
    	                nameValuePairs.add(new BasicNameValuePair("codepostal", codePostal));
    	    		    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    	                HttpResponse response = httpclient.execute(httppost);
     
    	                json= new JSONObject(EntityUtils.toString(response.getEntity()));
     
     
    	                jArray1 = json.getJSONArray("requete1");
     
    	                System.out.println("pROUTTTTTTTTTTTTTTTTT");
     
    	                System.out.println("Taille" + jArray1.length());
     
     
    	            } catch (Exception ex) {
    	                // signaler l'erreur
    	            	zeroResultatLivraison();
    	                Log.e("MyAppTag","Erreur réception données", ex);
    	                Toast.makeText(getBaseContext(),ex.getLocalizedMessage(),Toast.LENGTH_LONG).show();
    	                // ou throw new Exception(); si il faut signaler l'erreur à l'appelant !
    	            }	
     
     
     
    			return jArray1;
     
            }
     
            @Override
            protected void onPostExecute(JSONArray result) {
            	RestoListe.this.progressDialog.dismiss();
                if (result != null)
                	RestoListe.this.onBigCalculResult(result);
            }
        }
    Si j'enlève cette ligne du catch:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    zeroResultatLivraison();
    ça ne change rien j'ai toujours un FC. Voici mon nouveau logcat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    08-27 15:57:05.289: E/MyAppTag(12821): Erreur réception données
    08-27 15:57:05.289: E/MyAppTag(12821): org.json.JSONException: Value null at requete1 of type org.json.JSONObject$1 cannot be converted to JSONArray
    08-27 15:57:05.289: E/MyAppTag(12821): 	at org.json.JSON.typeMismatch(JSON.java:100)
    08-27 15:57:05.289: E/MyAppTag(12821): 	at org.json.JSONObject.getJSONArray(JSONObject.java:548)
    08-27 15:57:05.289: E/MyAppTag(12821): 	at com.restomaniak.alpha.RestoListe$BigCalcul.doInBackground(RestoListe.java:108)
    08-27 15:57:05.289: E/MyAppTag(12821): 	at com.restomaniak.alpha.RestoListe$BigCalcul.doInBackground(RestoListe.java:1)
    08-27 15:57:05.289: E/MyAppTag(12821): 	at android.os.AsyncTask$2.call(AsyncTask.java:264)
    08-27 15:57:05.289: E/MyAppTag(12821): 	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
    08-27 15:57:05.289: E/MyAppTag(12821): 	at java.util.concurrent.FutureTask.run(FutureTask.java:137)
    08-27 15:57:05.289: E/MyAppTag(12821): 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
    08-27 15:57:05.289: E/MyAppTag(12821): 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
    08-27 15:57:05.289: E/MyAppTag(12821): 	at java.lang.Thread.run(Thread.java:864)
    08-27 15:57:05.289: W/dalvikvm(12821): threadid=11: thread exiting with uncaught exception (group=0x40ab7228)
    08-27 15:57:05.319: E/AndroidRuntime(12821): FATAL EXCEPTION: AsyncTask #2
    08-27 15:57:05.319: E/AndroidRuntime(12821): java.lang.RuntimeException: An error occured while executing doInBackground()
    08-27 15:57:05.319: E/AndroidRuntime(12821): 	at android.os.AsyncTask$3.done(AsyncTask.java:278)
    08-27 15:57:05.319: E/AndroidRuntime(12821): 	at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
    08-27 15:57:05.319: E/AndroidRuntime(12821): 	at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
    08-27 15:57:05.319: E/AndroidRuntime(12821): 	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
    08-27 15:57:05.319: E/AndroidRuntime(12821): 	at java.util.concurrent.FutureTask.run(FutureTask.java:137)
    08-27 15:57:05.319: E/AndroidRuntime(12821): 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
    08-27 15:57:05.319: E/AndroidRuntime(12821): 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
    08-27 15:57:05.319: E/AndroidRuntime(12821): 	at java.lang.Thread.run(Thread.java:864)
    08-27 15:57:05.319: E/AndroidRuntime(12821): Caused by: java.lang.RuntimeException: Can t create handler inside thread that has not called Looper.prepare()
    08-27 15:57:05.319: E/AndroidRuntime(12821): 	at android.os.Handler.<init>(Handler.java:121)
    08-27 15:57:05.319: E/AndroidRuntime(12821): 	at android.widget.Toast$TN.<init>(Toast.java:317)
    08-27 15:57:05.319: E/AndroidRuntime(12821): 	at android.widget.Toast.<init>(Toast.java:91)
    08-27 15:57:05.319: E/AndroidRuntime(12821): 	at android.widget.Toast.makeText(Toast.java:233)
    08-27 15:57:05.319: E/AndroidRuntime(12821): 	at com.restomaniak.alpha.RestoListe$BigCalcul.doInBackground(RestoListe.java:118)
    08-27 15:57:05.319: E/AndroidRuntime(12821): 	at com.restomaniak.alpha.RestoListe$BigCalcul.doInBackground(RestoListe.java:1)
    08-27 15:57:05.319: E/AndroidRuntime(12821): 	at android.os.AsyncTask$2.call(AsyncTask.java:264)
    08-27 15:57:05.319: E/AndroidRuntime(12821): 	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
    08-27 15:57:05.319: E/AndroidRuntime(12821): 	... 4 more
    08-27 15:57:05.629: I/MapActivity(12821): Handling network change notification:CONNECTED
    08-27 15:57:05.659: D/memalloc(12821): /dev/pmem: Unmapping buffer base:0x51c58000 size:294912 offset:0
    08-27 15:57:05.659: D/memalloc(12821): /dev/pmem: Unmapping buffer base:0x544c6000 size:16461824 offset:16166912
    08-27 15:57:05.669: D/memalloc(12821): /dev/pmem: Unmapping buffer base:0x554b8000 size:5988352 offset:3899392
    08-27 15:57:05.699: E/WindowManager(12821): Activity com.restomaniak.alpha.RestoListe has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@40dcc670 that was originally added here
    08-27 15:57:05.699: E/WindowManager(12821): android.view.WindowLeaked: Activity com.restomaniak.alpha.RestoListe has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@40dcc670 that was originally added here
    08-27 15:57:05.699: E/WindowManager(12821): 	at android.view.ViewRootImpl.<init>(ViewRootImpl.java:352)
    08-27 15:57:05.699: E/WindowManager(12821): 	at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:373)
    08-27 15:57:05.699: E/WindowManager(12821): 	at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:321)
    08-27 15:57:05.699: E/WindowManager(12821): 	at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:152)
    08-27 15:57:05.699: E/WindowManager(12821): 	at android.view.Window$LocalWindowManager.addView(Window.java:541)
    08-27 15:57:05.699: E/WindowManager(12821): 	at android.app.Dialog.show(Dialog.java:301)
    08-27 15:57:05.699: E/WindowManager(12821): 	at com.restomaniak.alpha.RestoListe$BigCalcul.onPreExecute(RestoListe.java:87)
    08-27 15:57:05.699: E/WindowManager(12821): 	at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:561)
    08-27 15:57:05.699: E/WindowManager(12821): 	at android.os.AsyncTask.execute(AsyncTask.java:511)
    08-27 15:57:05.699: E/WindowManager(12821): 	at com.restomaniak.alpha.RestoListe.onCreate(RestoListe.java:318)
    08-27 15:57:05.699: E/WindowManager(12821): 	at android.app.Activity.performCreate(Activity.java:4531)
    08-27 15:57:05.699: E/WindowManager(12821): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1071)
    08-27 15:57:05.699: E/WindowManager(12821): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2150)
    08-27 15:57:05.699: E/WindowManager(12821): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2229)
    08-27 15:57:05.699: E/WindowManager(12821): 	at android.app.ActivityThread.access$600(ActivityThread.java:139)
    08-27 15:57:05.699: E/WindowManager(12821): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1261)
    08-27 15:57:05.699: E/WindowManager(12821): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    08-27 15:57:05.699: E/WindowManager(12821): 	at android.os.Looper.loop(Looper.java:154)
    08-27 15:57:05.699: E/WindowManager(12821): 	at android.app.ActivityThread.main(ActivityThread.java:4945)
    08-27 15:57:05.699: E/WindowManager(12821): 	at java.lang.reflect.Method.invokeNative(Native Method)
    08-27 15:57:05.699: E/WindowManager(12821): 	at java.lang.reflect.Method.invoke(Method.java:511)
    08-27 15:57:05.699: E/WindowManager(12821): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    08-27 15:57:05.699: E/WindowManager(12821): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    08-27 15:57:05.699: E/WindowManager(12821): 	at dalvik.system.NativeStart.main(Native Method)
    L'erreur de réception des données c'est normal puisque la BDD MySQL ne me retourne rien. Cependant mon problème est toujours là. Je comprend pas trop.

  13. #53
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Il y a toujours le Toast.makeText(getBaseContext(),ex.getLocalizedMessage(),Toast.LENGTH_LONG).show()

    Tout appel à l'UI doit être fait dans le thread UI....
    doInBackground est fait dans un worker thread inconnu, pas préparé pour gérer des appels à l'UI.

    Il faut faire tes appels dans le onPostExecute !
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  14. #54
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    Effectivement s'était, je te remercie beaucoup nicroman pour ta patience et ton investissement.

    Merci encore.

    Sujet clos. (Définitivement je l'espère)

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. [VB.Net] Traitement des résultats d'une requète
    Par Catalan dans le forum ASP.NET
    Réponses: 23
    Dernier message: 05/10/2005, 18h29
  2. Traitement des dates différent suivant le serveur
    Par le lynx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/09/2005, 12h14
  3. Réponses: 1
    Dernier message: 24/07/2005, 23h25
  4. Traitement des champs memo par DBGrid
    Par Sydaze dans le forum Bases de données
    Réponses: 4
    Dernier message: 18/04/2005, 10h24
  5. traitement des caractères spéciaux avec XSLT
    Par Mirgue dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 19/07/2004, 17h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo