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 :

Problème variable globale


Sujet :

Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 12
    Points
    12
    Par défaut Problème variable globale
    Bonjour. Dans mon mainactivity, je souhaite récuper is qui est dans the task. Ma méthode ne fonctionne pas. Pouvez-vous m'aider svp?
    MainActivity:
    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
    package com.example.basedonnees;
    
    
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    
    //import org.apache.http.NameValuePair;
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import android.app.ListActivity;
    import android.net.ParseException;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.ArrayAdapter;
    import android.widget.Toast;
    
    
    public class MainActivity extends ListActivity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //setContentView(R.layout.main);
            String result = null;
            String probleme= null;
         InputStream is = null;
         JSONObject json_data=null;
         //ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
         ArrayList<String> donnees = new ArrayList<String>();
    
         try{
        	 
     
         //commandes httpClient
    
            TheTask task= new TheTask();
            
            task.execute("http://192.168.15.117/ecoles/projet.php");
            
            is=task.is;
            Log.i("is=","" +is);
            
            probleme=task.entityStr;
            Log.i("entityStr=",""+probleme);
            
            //HttpClient httpclient = new DefaultHttpClient();
            /*HttpPost httppost = new HttpPost("http://127.0.0.1/ecoles/projet.php");
            Log.i("connect base","coucou");
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            Log.i("connect base","coucou1");
            HttpResponse response = httpclient.execute(httppost);
            Log.i("connect base","coucou2");
            HttpEntity entity = response.getEntity();
            is = entity.getContent();*/
            
            
         }
         catch(Exception e){
        	 	Log.i("taghttppost",""+e.toString());
        	 	
        	 	
                Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show();
           }
        
           
         //conversion de la réponse en chaine de caractère
            try
            {
            	Log.i("connect base","coucou");
            	Log.i("is=",""+is);
            	Log.i("ok=","ok");
             BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
             Log.i("connect base","coucou1");
             
             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("tagconvertstr",""+e.toString());
            }
            //recuperation des donnees json
            try{
              JSONArray jArray = new JSONArray(result);
                
                 for(int i=0;i<jArray.length();i++)
                 {
                
                       json_data = jArray.getJSONObject(i);
                       donnees.add(json_data.getString("nom"));
                       //r.add(json_data.getString("categorie"));
                       
                   }
                    setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, donnees));
                }
                catch(JSONException e){
                 Log.e("tagjsonexp",""+e.toString());
                } catch (ParseException e) {
                 Log.e("tagjsonpars",""+e.toString());
           }
                
        }
    }
    Et TheTask:
    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
    package com.example.basedonnees;
     
    import java.io.InputStream;
    import java.util.ArrayList;
     
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.util.EntityUtils;
     
    import android.os.AsyncTask;
    import android.util.Log;
    import android.widget.TextView;
     
    public class TheTask extends AsyncTask<String,String,String>
        {
    	private TextView textView;
    	public InputStream is;
    	public String entityStr;
     
     
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        // update textview here
        textView.setText("Server message is "+result);
    }
     
    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();
    }
     
    public InputStream Avoiris() {
    	Log.i("Avoiris=",""+is);
        return is;
    }
    @Override
    protected String doInBackground(String... params) {
    	ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
         try
            {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost method = new HttpPost(params[0]);
                Log.i("method=",""+method);
                method.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                HttpResponse response = httpclient.execute(method);
                HttpEntity entity = response.getEntity();
     
                if(entity != null){
                	Log.i("entity=","" +entity);
                	Log.i("message1=","coucou");
                	entityStr=EntityUtils.toString(entity);
                    Log.i("message2=","coucou");
                    Log.i("entityString=","" +entityStr);
     
                	HttpClient httpclient2 = new DefaultHttpClient();
                	HttpPost method2 = new HttpPost(params[0]);
                    Log.i("method=",""+method2);
                    method2.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                    HttpResponse response2 = httpclient2.execute(method2);
                    HttpEntity entity2 = response2.getEntity();
     
                    Log.i("entity2=","" +entity2);
                	is = entity2.getContent();
                	Log.i("is=",""+is);
                    return entityStr;
                }
                else{
                	Log.i("entity=","" +entity);
                    entityStr="No string.";
                    return entityStr;
                }
             }
             catch(Exception e){
            	 Log.i("entity=",e.toString());
                 entityStr="Network problem";
                 return entityStr;
             }
     
     
    }
    }

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 50
    Points : 67
    Points
    67
    Par défaut
    C'est sûr que ça ne marchera pas.
    Car après ton theTask.execute()
    tu fait is = theTask.is
    rien ne garantit que la variable est alimentée en ce moment!

    la méthode execute lance la tâche et retourne. le doInBackground est exécutée dans un autre thread alors que ton thread graphique est déjà au niveau "is = theTask.is".


    Il faut faire en sorte que tu passes le résultat (ton is) dans le onPostExecute().

    Voici une suggestion (mais ça n'empêche que tu as besoin de repenser ton concept)

    Nom : task.png
Affichages : 177
Taille : 7,9 Ko
    Créateur de RL-Lab.com

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 12
    Points
    12
    Par défaut :(
    Désolé mais je ne comprends pas ton graphique

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Sachant que is est un inputstream et pas un string comme dans postexecute()

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Je suis debutant en java

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 50
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par mimir02 Voir le message
    Désolé mais je ne comprends pas ton graphique
    Pour faire simple (mais ça ne veut pas dire que c'est propre)

    Tu divises ton code onCreate() de la façon suivante:


    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
    MainActivity ...{
    
    TheTask task
    
    void onCreate(){
    ....
    task =new Task(this)
    task.execute(....)
    }
    
    
    public void handleResult(InputStream is){
      //le reste du code ici
       probleme=task.entityStr;
       Log.i("entityStr=",""+probleme);
       .....
    }
    ....
    }
    
    public class TheTask extends AsyncTask<String,String,String>{
    
    
      MainActivity activity
    
      public TheTask(MainActivity a){
        activity = a;
      }
    
      void onPostExecute(Result){
       ....
       activity.handleResult(is)
      }
    
    .....
    }
    Créateur de RL-Lab.com

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Il y'a une erreur pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void handleResult(InputStream is){
    me disant que void est un type invalide pour la variable handleResult

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    j'ai pas le droit de mettre une methode dans une autre methode?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     public void onCreate(Bundle savedInstanceState) {
     public void handleResult(InputStream is){
    }
    }
    Je devrais plutot faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     public void handleResult(InputStream is){
    }
    public void onCreate(Bundle savedInstanceState) {
    handleResult(is)
    }
    ?

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 50
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par mimir02 Voir le message
    j'ai pas le droit de mettre une methode dans une autre methode?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     public void onCreate(Bundle savedInstanceState) {
     public void handleResult(InputStream is){
    }
    }
    Je devrais plutot faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     public void handleResult(InputStream is){
    }
    public void onCreate(Bundle savedInstanceState) {
    handleResult(is)
    }
    ?


    non t'as pas le droit
    si tu regardes bien mon code le onCreate() se termine (voir '}' ) avant handleResult()
    Créateur de RL-Lab.com

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    ah oui excuse moi

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Il me dit toujours que ismain est null:
    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
    package com.example.basedonnees;
     
     
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
     
    //import org.apache.http.NameValuePair;
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
     
    import android.app.ListActivity;
    import android.net.ParseException;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.ArrayAdapter;
    import android.widget.Toast;
     
     
    public class MainActivity extends ListActivity {
        /** Called when the activity is first created. */
        InputStream isMain = null;
        TheTask task;
        String probleme= null;
     
     
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //setContentView(R.layout.main);
            String result = null;
         JSONObject json_data=null;
         //ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
         ArrayList<String> donnees = new ArrayList<String>();
     
         try{
     
     
         //commandes httpClient
     
            task= new TheTask(this);
     
            task.execute("http://192.168.15.117/ecoles/projet.php");
     
            handleResult(isMain);
     
     
     
     
         }
         catch(Exception e){
        	 	Log.i("taghttppost",""+e.toString());
     
     
                Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show();
           }
     
     
         //conversion de la réponse en chaine de caractère
            try
            {
            	Log.i("connect base","coucou");
            	Log.i("is=",""+isMain);
            	Log.i("ok=","ok");
             BufferedReader reader = new BufferedReader(new InputStreamReader(isMain,"UTF-8"));
             Log.i("connect base","coucou1");
     
             StringBuilder sb  = new StringBuilder();
     
             String line = null;
     
             while ((line = reader.readLine()) != null) 
             {
             sb.append(line + "\n");
             }
     
             isMain.close();
     
             result = sb.toString();
     
            }
            catch(Exception e)
            {
             Log.e("tagconvertstr",""+e.toString());
            }
            //recuperation des donnees json
            try{
              JSONArray jArray = new JSONArray(result);
     
                 for(int i=0;i<jArray.length();i++)
                 {
     
                       json_data = jArray.getJSONObject(i);
                       donnees.add(json_data.getString("nom"));
                       //r.add(json_data.getString("categorie"));
     
                   }
                    setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, donnees));
                }
                catch(JSONException e){
                 Log.e("tagjsonexp",""+e.toString());
                } catch (ParseException e) {
                 Log.e("tagjsonpars",""+e.toString());
           }
     
        }
        public void handleResult(InputStream is){
        	isMain=is;
            Log.i("isMain=","" +isMain);
     
        	probleme=task.entityStr;
        	Log.i("entityStr=",""+probleme);
     
     
     
            //HttpClient httpclient = new DefaultHttpClient();
            /*HttpPost httppost = new HttpPost("http://127.0.0.1/ecoles/projet.php");
            Log.i("connect base","coucou");
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            Log.i("connect base","coucou1");
            HttpResponse response = httpclient.execute(httppost);
            Log.i("connect base","coucou2");
            HttpEntity entity = response.getEntity();
            is = entity.getContent();*/
        }
    }
    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
    package com.example.basedonnees;
     
    import java.io.InputStream;
    import java.util.ArrayList;
     
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.util.EntityUtils;
     
    import android.os.AsyncTask;
    import android.util.Log;
    import android.widget.TextView;
     
    public class TheTask extends AsyncTask<String,String,String>
        {
    	private TextView textView;
    	public InputStream is;
    	public String entityStr;
    	MainActivity activity;
     
    public TheTask(MainActivity a){
    	activity = a;
    }
     
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        // update textview here
        textView.setText("Server message is "+result);
        activity.handleResult(is);
    }
     
    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();
    }
     
    public InputStream Avoiris() {
    	Log.i("Avoiris=",""+is);
        return is;
    }
    @Override
    protected String doInBackground(String... params) {
    	ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
         try
            {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost method = new HttpPost(params[0]);
                Log.i("method=",""+method);
                method.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                HttpResponse response = httpclient.execute(method);
                HttpEntity entity = response.getEntity();
     
                if(entity != null){
                	Log.i("entity=","" +entity);
                	Log.i("message1=","coucou");
                	entityStr=EntityUtils.toString(entity);
                    Log.i("message2=","coucou");
                    Log.i("entityString=","" +entityStr);
     
                	HttpClient httpclient2 = new DefaultHttpClient();
                	HttpPost method2 = new HttpPost(params[0]);
                    Log.i("method=",""+method2);
                    method2.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                    HttpResponse response2 = httpclient2.execute(method2);
                    HttpEntity entity2 = response2.getEntity();
     
                    Log.i("entity2=","" +entity2);
                	is = entity2.getContent();
                	Log.i("is=",""+is);
     
                    return entityStr;
                }
                else{
                	Log.i("entity=","" +entity);
                    entityStr="No string.";
                    return entityStr;
                }
             }
             catch(Exception e){
            	 Log.i("entity=",e.toString());
                 entityStr="Network problem";
                 return entityStr;
             }
     
     
    }
    }

  12. #12
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 50
    Points : 67
    Points
    67
    Par défaut
    En fait on fait tout ce bazare pour éviter de lire is dans onCreate().
    Supprime la ligne handleResult(isMain); dans onCreate()
    et remet tout le code après task.execute() dans handleresult()


    voir le code suivant


    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
    package com.example.basedonnees;
     
     
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
     
    //import org.apache.http.NameValuePair;
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
     
    import android.app.ListActivity;
    import android.net.ParseException;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.ArrayAdapter;
    import android.widget.Toast;
     
     
    public class MainActivity extends ListActivity {
        /** Called when the activity is first created. */
        InputStream isMain = null;
        TheTask task;
        String probleme= null;
     
     
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //setContentView(R.layout.main);
            String result = null;
         JSONObject json_data=null;
         //ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
         ArrayList<String> donnees = new ArrayList<String>();
     
         try{
     
     
         //commandes httpClient
     
            task= new TheTask(this);
     
            task.execute("http://192.168.15.117/ecoles/projet.php");
     
         }
         catch(Exception e){
        	 	Log.i("taghttppost",""+e.toString());
     
     
                Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show();
           }
     
     
     
        }
     
     
     
     
        public void handleResult(InputStream is){
        	isMain=is;
            Log.i("isMain=","" +isMain);
     
        	probleme=task.entityStr;
        	Log.i("entityStr=",""+probleme);
     
     
     
     
         //conversion de la réponse en chaine de caractère
            try
            {
            	Log.i("connect base","coucou");
            	Log.i("is=",""+isMain);
            	Log.i("ok=","ok");
             BufferedReader reader = new BufferedReader(new InputStreamReader(isMain,"UTF-8"));
             Log.i("connect base","coucou1");
     
             StringBuilder sb  = new StringBuilder();
     
             String line = null;
     
             while ((line = reader.readLine()) != null) 
             {
             sb.append(line + "\n");
             }
     
             isMain.close();
     
             result = sb.toString();
     
            }
            catch(Exception e)
            {
             Log.e("tagconvertstr",""+e.toString());
            }
            //recuperation des donnees json
            try{
              JSONArray jArray = new JSONArray(result);
     
                 for(int i=0;i<jArray.length();i++)
                 {
     
                       json_data = jArray.getJSONObject(i);
                       donnees.add(json_data.getString("nom"));
                       //r.add(json_data.getString("categorie"));
     
                   }
                    setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, donnees));
                }
                catch(JSONException e){
                 Log.e("tagjsonexp",""+e.toString());
                } catch (ParseException e) {
                 Log.e("tagjsonpars",""+e.toString());
           }
        }
    }
    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
    package com.example.basedonnees;
     
    import java.io.InputStream;
    import java.util.ArrayList;
     
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.util.EntityUtils;
     
    import android.os.AsyncTask;
    import android.util.Log;
    import android.widget.TextView;
     
    public class TheTask extends AsyncTask<String,String,String>
        {
    	private TextView textView;
    	public InputStream is;
    	public String entityStr;
    	MainActivity activity;
     
    public TheTask(MainActivity a){
    	activity = a;
    }
     
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        // update textview here
        textView.setText("Server message is "+result);
        activity.handleResult(is);
    }
     
    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();
    }
     
    public InputStream Avoiris() {
    	Log.i("Avoiris=",""+is);
        return is;
    }
    @Override
    protected String doInBackground(String... params) {
    	ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
         try
            {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost method = new HttpPost(params[0]);
                Log.i("method=",""+method);
                method.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                HttpResponse response = httpclient.execute(method);
                HttpEntity entity = response.getEntity();
     
                if(entity != null){
                	Log.i("entity=","" +entity);
                	Log.i("message1=","coucou");
                	entityStr=EntityUtils.toString(entity);
                    Log.i("message2=","coucou");
                    Log.i("entityString=","" +entityStr);
     
                	HttpClient httpclient2 = new DefaultHttpClient();
                	HttpPost method2 = new HttpPost(params[0]);
                    Log.i("method=",""+method2);
                    method2.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                    HttpResponse response2 = httpclient2.execute(method2);
                    HttpEntity entity2 = response2.getEntity();
     
                    Log.i("entity2=","" +entity2);
                	is = entity2.getContent();
                	Log.i("is=",""+is);
     
                    return entityStr;
                }
                else{
                	Log.i("entity=","" +entity);
                    entityStr="No string.";
                    return entityStr;
                }
             }
             catch(Exception e){
            	 Log.i("entity=",e.toString());
                 entityStr="Network problem";
                 return entityStr;
             }
     
     
    }
    }
    Créateur de RL-Lab.com

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Ca a l'air de fonctionner. Merci. Mais, je n'arrive pas a lire les log.i qui sont dans le handleresult. Can you help me please?

  14. #14
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 50
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par mimir02 Voir le message
    Ca a l'air de fonctionner. Merci. Mais, je n'arrive pas a lire les log.i qui sont dans le handleresult. Can you help me please?

    ça me surprend
    t'as des exceptions???
    Créateur de RL-Lab.com

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    05-30 10:07:47.320: D/gralloc_goldfish(2391): Emulator without GPU emulation detected.
    05-30 10:07:48.070: D/AndroidRuntime(2391): Shutting down VM
    05-30 10:07:48.070: W/dalvikvm(2391): threadid=1: thread exiting with uncaught exception (group=0xb4a96ba8)
    05-30 10:07:48.130: D/dalvikvm(2391): GC_FOR_ALLOC freed 257K, 10% free 3021K/3348K, paused 36ms, total 40ms
    05-30 10:07:48.140: E/AndroidRuntime(2391): FATAL EXCEPTION: main
    05-30 10:07:48.140: E/AndroidRuntime(2391): Process: com.example.basedonnees, PID: 2391
    05-30 10:07:48.140: E/AndroidRuntime(2391): java.lang.NullPointerException
    05-30 10:07:48.140: E/AndroidRuntime(2391): at com.example.basedonnees.TheTask.onPostExecute(TheTask.java:38)
    05-30 10:07:48.140: E/AndroidRuntime(2391): at com.example.basedonnees.TheTask.onPostExecute(TheTask.java:1)
    05-30 10:07:48.140: E/AndroidRuntime(2391): at android.os.AsyncTask.finish(AsyncTask.java:632)
    05-30 10:07:48.140: E/AndroidRuntime(2391): at android.os.AsyncTask.access$600(AsyncTask.java:177)
    05-30 10:07:48.140: E/AndroidRuntime(2391): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
    05-30 10:07:48.140: E/AndroidRuntime(2391): at android.os.Handler.dispatchMessage(Handler.java:102)
    05-30 10:07:48.140: E/AndroidRuntime(2391): at android.os.Looper.loop(Looper.java:136)
    05-30 10:07:48.140: E/AndroidRuntime(2391): at android.app.ActivityThread.main(ActivityThread.java:5017)
    05-30 10:07:48.140: E/AndroidRuntime(2391): at java.lang.reflect.Method.invokeNative(Native Method)
    05-30 10:07:48.140: E/AndroidRuntime(2391): at java.lang.reflect.Method.invoke(Method.java:515)
    05-30 10:07:48.140: E/AndroidRuntime(2391): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
    05-30 10:07:48.140: E/AndroidRuntime(2391): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
    05-30 10:07:48.140: E/AndroidRuntime(2391): at dalvik.system.NativeStart.main(Native Method)

  16. #16
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    je n'arrive pas non plus a les lire dans le onpostexecute

  17. #17
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 50
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par mimir02 Voir le message
    je n'arrive pas non plus a les lire dans le onpostexecute
    C'est normal!
    ton textView n'est pas "setté" (alimenté)!
    Tu peux le faire passer dans le constructure aussi comme dans le cas de MainActivity ou bien il est préférable de le mettre dans (textView.setText("Server message is "+result); ) dans handleResult
    Créateur de RL-Lab.com

  18. #18
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Je ne pense pas que le fait d'avoir ces erreurs soient la cause du fait que je vois pas le logs

  19. #19
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    mon textview est bien mon layout je crois?

  20. #20
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Tu vas rigoler plus que tu l'as jamais fait: j'ai oublié d'allumer uwamp!!!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème variable globale
    Par nanoute dans le forum VB.NET
    Réponses: 2
    Dernier message: 29/08/2009, 13h03
  2. Problème variable globale contenant un stream !
    Par palmitoto dans le forum Lisp
    Réponses: 4
    Dernier message: 25/04/2008, 05h40
  3. Problème variables globales
    Par jcatala dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 20/03/2008, 20h22
  4. problème variable globale
    Par logarithme1984 dans le forum C++
    Réponses: 10
    Dernier message: 17/01/2007, 10h22
  5. [javascript] Problème variable globale !!!!
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 08/08/2005, 16h41

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