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 :

ProgressBar erreur Thread


Sujet :

Android

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Par défaut ProgressBar erreur Thread
    Bonjour,

    J'ai une application qui affiche le résultat de plusieurs requêtes. Je change d'activity via onglets (tabwidget). Vue que l'application est très longue j'ai décider de mettre une progressdialog.
    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class MonActivity extends Activity  implements Runnable{
    private ProgressDialog pd;
     
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.textview);
     
     launchWait();
     
    }
    Méthode launchWait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     public void launchWait() {
    				pd = ProgressDialog.show(this, "Patientez...", "Chargement", true,false);
     
    				Thread thread = new Thread(this);
    				thread.start();
    			}
    Method run:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public void run() {
    	//Je récupére les variable placer en paramètre (via onglet) p,  l, id, c			
    lancement(p,  l, id, c);
     
    		                //Une fois l'opération finie, prévenir la boîte de dialogue 
    		                //qu'elle peut se fermer :
    				handler.sendEmptyMessage(0);
    			}
    Handler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    private Handler handler = new Handler() {
     
    				@Override
    				public void handleMessage(Message msg) {
    		                        //Le handler a reçu une notification
    		                        //On ferme la boîte de dialogue
    		                        //Les bonnes pratiques voudraient qu'on teste le msg ...
    		 			pd.dismiss();
    				}
    			};

    lorsque je lance mon application tout se passe bien ma page de présentation s'affiche sans souci.
    Mais si je vais sur un nouvel onglet (relance la même activity avec de nouveau paramètre) je récupère bien les résultat de ma requête dans un log mais mon application plante.

  2. #2
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Salut,

    Peut-on avoir le message d'erreur ? As tu regarder au débugueur si t'avais pas des variables à null ou des choses comme ça ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Par défaut
    Voici les erreur :
    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
     
    01-12 14:25:54.802: W/dalvikvm(639): threadid=8: thread exiting with uncaught exception (group=0x4001d800)
    01-12 14:25:54.852: E/AndroidRuntime(639): FATAL EXCEPTION: Thread-9
    01-12 14:25:54.852: E/AndroidRuntime(639): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at android.view.ViewRoot.checkThread(ViewRoot.java:2802)
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at android.view.ViewRoot.requestLayout(ViewRoot.java:594)
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at android.view.View.requestLayout(View.java:8125)
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at android.view.View.requestLayout(View.java:8125)
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at android.view.View.requestLayout(View.java:8125)
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at android.view.View.requestLayout(View.java:8125)
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at android.view.View.requestLayout(View.java:8125)
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at android.view.View.requestLayout(View.java:8125)
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at android.view.View.requestLayout(View.java:8125)
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at android.view.View.requestLayout(View.java:8125)
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at android.view.View.requestLayout(View.java:8125)
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at android.widget.TableLayout.requestLayout(TableLayout.java:223)
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at android.view.View.requestLayout(View.java:8125)
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at android.view.View.requestLayout(View.java:8125)
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at android.widget.TextView.checkForRelayout(TextView.java:5371)
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at android.widget.TextView.setText(TextView.java:2688)
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at android.widget.TextView.setText(TextView.java:2556)
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at android.widget.TextView.setText(TextView.java:2531)
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at com.tab.com.MonActivity.getServerData_ss(MonActivity.java:305)
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at com.tab.com.MonActivity.getServerData(MonActivity.java:159)
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at com.tab.com.MonActivity.lancement(MonActivity.java:87)
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at com.tab.com.MonActivity.run(MonActivity.java:358)
    01-12 14:25:54.852: E/AndroidRuntime(639): 	at java.lang.Thread.run(Thread.java:1096)
    01-12 14:25:56.452: E/WindowManager(639): Activity com.tab.com.main has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44fa19e0 that was originally added here
    01-12 14:25:56.452: E/WindowManager(639): android.view.WindowLeaked: Activity com.tab.com.main has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44fa19e0 that was originally added here
    01-12 14:25:56.452: E/WindowManager(639): 	at android.view.ViewRoot.<init>(ViewRoot.java:247)
    01-12 14:25:56.452: E/WindowManager(639): 	at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
    01-12 14:25:56.452: E/WindowManager(639): 	at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
    01-12 14:25:56.452: E/WindowManager(639): 	at android.view.Window$LocalWindowManager.addView(Window.java:424)
    01-12 14:25:56.452: E/WindowManager(639): 	at android.app.Dialog.show(Dialog.java:241)
    01-12 14:25:56.452: E/WindowManager(639): 	at android.app.ProgressDialog.show(ProgressDialog.java:107)
    01-12 14:25:56.452: E/WindowManager(639): 	at android.app.ProgressDialog.show(ProgressDialog.java:95)
    01-12 14:25:56.452: E/WindowManager(639): 	at com.tab.com.MonActivity.launchWait(MonActivity.java:332)
    01-12 14:25:56.452: E/WindowManager(639): 	at com.tab.com.MonActivity.onCreate(MonActivity.java:72)
    01-12 14:25:56.452: E/WindowManager(639): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    01-12 14:25:56.452: E/WindowManager(639): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
    01-12 14:25:56.452: E/WindowManager(639): 	at android.app.ActivityThread.startActivityNow(ActivityThread.java:2503)
    01-12 14:25:56.452: E/WindowManager(639): 	at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
    01-12 14:25:56.452: E/WindowManager(639): 	at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
    01-12 14:25:56.452: E/WindowManager(639): 	at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:651)
    01-12 14:25:56.452: E/WindowManager(639): 	at android.widget.TabHost.setCurrentTab(TabHost.java:323)
    01-12 14:25:56.452: E/WindowManager(639): 	at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:129)
    01-12 14:25:56.452: E/WindowManager(639): 	at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:453)
    01-12 14:25:56.452: E/WindowManager(639): 	at android.view.View.performClick(View.java:2408)
    01-12 14:25:56.452: E/WindowManager(639): 	at android.view.View$PerformClick.run(View.java:8816)
    01-12 14:25:56.452: E/WindowManager(639): 	at android.os.Handler.handleCallback(Handler.java:587)
    01-12 14:25:56.452: E/WindowManager(639): 	at android.os.Handler.dispatchMessage(Handler.java:92)
    01-12 14:25:56.452: E/WindowManager(639): 	at android.os.Looper.loop(Looper.java:123)
    01-12 14:25:56.452: E/WindowManager(639): 	at android.app.ActivityThread.main(ActivityThread.java:4627)
    01-12 14:25:56.452: E/WindowManager(639): 	at java.lang.reflect.Method.invokeNative(Native Method)
    01-12 14:25:56.452: E/WindowManager(639): 	at java.lang.reflect.Method.invoke(Method.java:521)
    01-12 14:25:56.452: E/WindowManager(639): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    01-12 14:25:56.452: E/WindowManager(639): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    01-12 14:25:56.452: E/WindowManager(639): 	at dalvik.system.NativeStart.main(Native Method)
    Avant d'avoir le message d'erreur je récupère bien le résultat de mes requêtes.

  4. #4
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Tu peux réexpliquer le cas de test :
    Tu as une application avec plusieurs onglets.
    Dans chaque onglet tu as une activité.
    Sur l'activité de l'onglet1, tu as le chargement d'une tâche longue avec l'affichage d'une progress dialog.
    Pendant le traitement de cette tâche longue, tu change d'onglet, puis tu reviens sur l'onglet1 et là tu as l'erreur.
    C'est ça ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Par défaut
    Donc j'ai des onglets chaque onglet renvoi à la même activity (MonActivity) mais avec des paramètres différants.
    Cette activité réalise une requête puis une autre par rapport au résultat de la premier requête (correspond à la method lancement()).

    C'est à dire que a chaque fois que je clic sur un onglet la page est en gros réactualisé avec des nouveaux paramètres.

    Malheureusement depuis que j'ai mi la ProgressDialog sa ne fonctionne plus. Pourtant je récupère bien le résultat de mes requêtes dans le log.

  6. #6
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    En faite ton erreur provient d'un thread qui essaye de dégager la progressDialog alors que ce n'est pas lui le propriétaire. Il y a donc un conflit et une exception.

    Maintenant, vu que je ne connais pas ton implémentation dans le détail, il faut que tu examine bien si l'instance de l'activité qui créé ta progressdialog est bien la même que celle qui la ferme.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Par défaut
    Sa voudrais dire que ma progressdialog est prioritaire a ma méthode lancement()?

  8. #8
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Pourrais tu préciser ta notion de prioritaire ?

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Par défaut
    Mon programme considéré que ma progressdialogue est prioritaire donc il ne l’arrête jamais ?

  10. #10
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Je ne comprend pas ta notion de prioritaire.
    Pourrais tu reformuler ?

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Par défaut
    Enfaite j'ai pas compris ta phrase :
    En faite ton erreur provient d'un thread qui essaye de dégager la progressDialog alors que ce n'est pas lui le propriétaire. Il y a donc un conflit et une exception.

    Maintenant, vu que je ne connais pas ton implémentation dans le détail, il faut que tu examine bien si l'instance de l'activité qui créé ta progressdialog est bien la même que celle qui la ferme.
    Je comprend que dans mon application ne fonctionne pas parce que dans ma methode lancement() je n'ai rien qui fait appel a ma progressdialogue non?

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 141
    Par défaut
    Est-ce que tu as un Toast qq part dans le code de la progress (thread ou handler) ?

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Par défaut
    non

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 141
    Par défaut
    t'as pas un setText qui traine dans le handler ou le thread ou dans des méthodes appelés la dedans ?

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Par défaut
    Si dans ma method lancement() j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    txt_ta.setText(Html.fromHtml(tar1));
    txt_ta2.setText(Html.fromHtml(tar2));
    txt_ta3.setText(Html.fromHtml(tar3));
    txt.setText(Html.fromHtml(plat));

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 141
    Par défaut
    ok donc ben c'est le problème.
    seul le thread de l'activité peut modifier la vue ou afficher des trucs (genre toast).

    donc faut faire un runOnUiThread() à partir de ton activité principale.
    tu recupères une variable ou un handle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public void lancement(Activity myActivity) {
      // là danger
      myActivity.runOnUiThread(new Runnable() {
      // là je peux modifier l\'UI
    });
     // là encore danger
    }

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Par défaut
    je renvoi rien au handler.
    il faudrait faire quelque chose dans se style la?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public void run() {
    	//Je récupére les variables placer en paramètre (via onglet) p,  l, id, 	
     
     MonActivity .runOnUiThread(new Runnable() {
      lancement(p,  l, id, c); //là je peux modifier l\'UI
    });		
     
     
     //Une fois l'opération finie, prévenir la boîte de dialogue 
     //qu'elle peut se fermer :
    handler.sendEmptyMessage(0);
    			}

  18. #18
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Met nous le code complet de ton activité (ou moins des méthodes utilisés pour l'initialisation de ton activité)

  19. #19
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 141
    Par défaut
    Il faut faire le minimum vital dans RunUI sinon ça sert à rien d'être dans un Thread séparé pour se raccrocher immédiatement au Thread principal !

    Sinon l'interface va bloquer et l'utilisateur va pas être content.

  20. #20
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Par défaut
    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    public class test extends Activity  implements Runnable{
    	private ProgressDialog pd;	
     
    	public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.textview);
     
            txt = (TextView) findViewById(R.id.textViewText);
            txt_ta1 = (TextView) findViewById(R.id.textViewTa1);
            txt_ta2 = (TextView) findViewById(R.id.textViewTa2);
            txt_ta3 = (TextView) findViewById(R.id.textViewTa3);
     
            launchWait();
     
            }
    	public static final String strURL = "http://10.0.0.2/android/fichier.php";
    	public static final String strURL_bis = "http://10.0.0.2/android/fichier2.php";
     
     
     
    	 Intent intent = null;  // Reusable Intent for each tab
     
    	private void lancement(String p,  String l, String id, String c) {
     
     
    		getServerData("", p, l, id, c);
     
    	}
     
     
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //							Affiche intitulé 
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////	
     
     
    	private void getServerData(String returnString, String p, String  l, String id, String c) {
     
     
     
    		InputStream is = null;
    		String result = "";
     
    		// Envoyer la requête au script PHP.
    		ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    		nameValuePairs.add(new BasicNameValuePair("re", id));
    		nameValuePairs.add(new BasicNameValuePair("ty",  l));
    		nameValuePairs.add(new BasicNameValuePair("p", p));
     
    		// Envoie de la commande http
    		try{
    			HttpClient httpclient = new DefaultHttpClient();
    			HttpPost httppost = new HttpPost(strURL);
    			httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    			HttpResponse response = httpclient.execute(httppost);
    			HttpEntity entity = response.getEntity();
    			is = entity.getContent();
     
    		}catch(Exception e){
    			Log.e("log_tag", "Error in http connection " + e.toString());
    		}
     
    		// Convertion de la requête en string
    		try{
    			BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
    			StringBuilder sb = new StringBuilder();
    			String line = null;
    			while ((line = reader.readLine()) != null) {
    				sb.append(line + "\n");
    			}
    			is.close();
    			result=sb.toString();
    		}catch(Exception e){
    			Log.e("log_tag", "Error converting result " + e.toString());
    		}
    		// Parse les données JSON
    		try{
    			Log.e("log_tag", "result  " +result);
    			JSONArray jArray = new JSONArray(result);
    			for(int i=0;i<jArray.length();i++){
    				JSONObject json_data = jArray.getJSONObject(i);			
     
    				libelle = json_data.getString("libelle");		
    				id_ty = json_data.getString("id_ty");
     
    					tla+= "<br/>" + libelle +"<br/>"; 
     
     
     
     
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //							SOUS PARTIE
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
     
    				 getServerData_ss(id_ty, p, id, c);	
     
     
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //							FIN SOUS PARTIE
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////				
     
     
    			}
    		}catch(JSONException e){
    			Log.e("log_tag", "1 Error parsing data " + e);
    		}}
    		//return returnString; 
     
    //////////////FONTION Sous parti/////////////////////////////////////////////
     
    		private void getServerData_ss(String id_ty, String p, String id, String c) {
    			InputStream is = null;
    			String result_bis="";
     
     
    			// Envoyer la requête au script PHP.
    			ArrayList<NameValuePair> name = new ArrayList<NameValuePair>();
    			name.add(new BasicNameValuePair("id_ty", id_ty));
    			name.add(new BasicNameValuePair("re", id));
    			name.add(new BasicNameValuePair("p", p));
    			// Envoie de la commande http
    			try{
    				HttpClient httpclient = new DefaultHttpClient();
    				HttpPost httppost = new HttpPost(strURL_bis);
    				httppost.setEntity(new UrlEncodedFormEntity(name));
    				HttpResponse response = httpclient.execute(httppost);
    				HttpEntity entity = response.getEntity();
    				is = entity.getContent();
     
    			}catch(Exception e){
    				Log.e("log_tag", " 2 Error in http connection " + e.toString());
    			}
     
    			// Convertion de la requête en string
    			try{
    				BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
    				StringBuilder sb_bis = new StringBuilder();
    				String line = null;
    				while ((line = reader.readLine()) != null) {
    					sb_bis.append(line + "\n");
    				}
    				is.close();
    				result_bis=sb_bis.toString();
    			}catch(Exception e){
    				Log.e("log_tag", "2 Error converting result " + e.toString());
    			}
    			// Parse les données JSON
    			try{
    				Log.e("log_tag", "result_bis  " +result_bis);
    				JSONArray jAr = new JSONArray(result_bis);
     
    				for(int j=0;j<jAr.length();j++){
     
    					JSONObject json = jAr.getJSONObject(j);
     
    					//recupertation donner JSON 
    					 ingr = json.getString("ingr");
    					 nb1=json.getString("nb1");
    					 nb2=json.getString("nb2");
    					 libelle = json.getString("libelle");
    					 ta1=json.getString("ta1");
    					 ta2=json.getString("ta2");
    					 ta3=json.getString("ta3");
    					 nb3=json.getString("nb3");
     
    					tla+= "<br/><tt><FONT color ='"+c+"'>"+ libelle+"</tt></font>";
     
    						txt_ta3.setText(Html.fromHtml(ta3));
    						txt_ta2.setText(Html.fromHtml(ta2));
    						txt_ta1.setText(Html.fromHtml(ta1));
     
    					txt.setText(Html.fromHtml(plat));
     
    				}
    				// handler.sendEmptyMessage(0);
     
    			}catch(JSONException e){
    				Log.e("log_tag", "2 Error parsing data " + e.toString());
    			}
     
    }
    		   public void launchWait() {
    				pd = ProgressDialog.show(this, "Patientez...", "Chargement", true,false);
     
    				Thread thread = new Thread(this);
    				thread.start();
    			}
     
    			public void run() {			 
    				//recupere la Lan
    			    Lan lan_suite =getIntent().getExtras().getParcelable("lan_suite");
    			    String p = lan_suite.getmLan();
     
     
    			    //recupere le ty 
    			    Ty ty_suite =getIntent().getExtras().getParcelable("ty_suite");
    			    String l = ty_suite.getmty();
     
    			  //recupere id re
    			    Re re_suite =getIntent().getExtras().getParcelable("re_suite");
    			    String id = re_suite.getmre();
     
    			  //c
    			    c c_suite =getIntent().getExtras().getParcelable("c_suite");
    			    String c = c_suite.getmc();
     
    				lancement(p,  l, id, c);    
     
     
    				handler.sendEmptyMessage(0);
    			}
     
    			private Handler handler = new Handler() {
     
    				@Override
    				public void handleMessage(Message msg) {
    		                        //Le handler a reçu une notification
    		                        //On ferme la boîte de dialogue
    		                        //Les bonnes pratiques voudraient qu'on teste le msg ...
    		 			pd.dismiss();
    				}
    			};
     
     
    		   }

Discussions similaires

  1. Erreur Thread sur Appel dans DLL
    Par Danyel dans le forum VB.NET
    Réponses: 10
    Dernier message: 27/10/2008, 23h57
  2. ProgressBar sans Thread ?
    Par RR instinct dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 27/07/2007, 15h54
  3. [PB] Progressbar avec thread
    Par todier dans le forum C#
    Réponses: 3
    Dernier message: 15/06/2007, 10h46
  4. Fermeture application - Erreur thread
    Par b_lob dans le forum C#
    Réponses: 4
    Dernier message: 23/02/2007, 16h47
  5. [vb2005]Progressbar et thread
    Par stargates dans le forum Windows Forms
    Réponses: 2
    Dernier message: 04/06/2006, 07h38

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