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

Composants graphiques Android Discussion :

Spinner & initialisation de la liste [Débutant(e)]


Sujet :

Composants graphiques Android

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut Spinner & initialisation de la liste
    Bonjour,

    Je débute sous Android et je me heurte à un problème avec un Spinner.

    J'ai bien le bouquin de Mark Murphy (3ème edition), d'où j'ai récupéré un code de démo qui fonctionne bien chez lui.

    Problème: ses exemples sont simples et ne comportent toujours qu'une activité, une classe & un fichier de layout xml.

    Or mon exemple à moi comprend 3 classes
    -> la principale
    -> spinner1
    -> spinner2
    et mes deux Spinner restent désespérément vides.

    Je suppose qu'il manque "un lien" quelque part entre mes différents fichiers...

    main.xml
    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
    <?xml version="1.0" encoding="utf-8"?>
     
    <!-- TABLE LAYOUT pour saisie ville + bouton même ligne... sachant qu un TL se transforme en LINEAR LAYOUT (vertical) entre ses balises <table row> -->
    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/bois"
        android:stretchColumns="1" >
     
        <TextView
            android:id="@+id/selection"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
     
     
        <!-- ***************************** -->
        <!-- ligne saisie ville + chercher -->
        <!-- ***************************** -->
       <TableRow>
     
            <EditText
                android:id="@+id/entry"
                android:layout_span="3"
                android:hint="Entrer une ville"
                android:contentDescription="Entrer une ville"
                android:capitalize="words"
                android:inputType="textAutoCorrect"
             />
     
            <Button
                android:id="@+id/go"
                android:layout_column="2"
                android:contentDescription="lancer la recherche sur la ville"
                android:text="chercher" />
        </TableRow>
     
       <!-- *********************** -->
       <!--  ligne GEOLOCALLISATION -->
       <!-- *********************** -->
       <TableRow>
           <Button
                android:id="@+id/geoloc"
                android:layout_column="1"
                android:layout_width="fill_parent"
                android:layout_span="3"
                android:text="me géolocaliser" />
        </TableRow>
     
       <!-- ****************** -->
       <!-- ligne DEPARTEMENTS -->
       <!-- ****************** -->
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Choisir un département:"
            android:textAppearance="?android:attr/textAppearanceMedium" />
     
        <Spinner
            android:id="@+id/spinner1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:drawSelectorOnTop="true"
            android:contentDescription="choisir un département"
            android:prompt="@string/choix_departement"
            tools:listitem="@android:layout/simple_spinner_item" 
        />
     
       <!-- ************* -->
       <!-- ligne REGIONS -->
       <!-- ************* -->
       <TextView
           android:id="@+id/textView2"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Choisir une région:"
           android:textAppearance="?android:attr/textAppearanceMedium" />
     
           <Spinner
            android:id="@+id/spinner2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:drawSelectorOnTop="true"
            android:hint="choisir une région"
            android:contentDescription="choisir une région"
            android:prompt="@string/choix_region"        
            tools:listitem="@android:layout/simple_spinner_item" 
        />
    </TableLayout>
    Test.java
    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
    package com.bidule.mobi;
     
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Context;
    import android.view.Menu;
    import android.widget.EditText;
    import android.widget.Toast;
     
    public class test extends Activity 
    {
        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
        super.onCreate(savedInstanceState);
            setContentView(R.layout.main);        
        }
     
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    }
    SpinnerDepartements.java
    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
    package com.bidule.mobi;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.Spinner;
    import android.widget.TextView;
    import android.widget.Toast;
     
    public class SpinnerDepartements extends Activity implements AdapterView.OnItemSelectedListener 
    {
        private TextView selection;
        private static final String[] items={"-choisir un département-","lorem1", "ipsum1", "dolor1",    "sit1", "amet1", "consectetuer1"};
     
        @Override
        public void onCreate(Bundle icicle) 
        {
     
            super.onCreate(icicle);
            setContentView(R.layout.main);
     
            selection=(TextView)findViewById(R.id.selection);
            Spinner spin=(Spinner)findViewById(R.id.spinner1);
            spin.setOnItemSelectedListener(this);        
            ArrayAdapter<String> aa=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,items);
            aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spin.setAdapter(aa);
        }
     
     
        public void onItemSelected(AdapterView<?> parent,View v, int position, long id) 
        {
            selection.setText(items[position]);
        }
     
     
        public void onNothingSelected(AdapterView<?> parent) 
        {
            selection.setText("");
        }
    }
    SpinnerDepartements.java
    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
    package com.bidule.mobi;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.Spinner;
    import android.widget.TextView;
    import android.widget.Toast;
     
    public class SpinnerDepartements extends Activity implements AdapterView.OnItemSelectedListener 
    {
        private TextView selection;
        private static final String[] items={"-choisir une région-","lorem2", "ipsum2", "dolor2", "sit2", "amet2", "consectetuer2"};
     
        @Override
        public void onCreate(Bundle icicle) 
        {
            super.onCreate(icicle);
            setContentView(R.layout.main);
                selection=(TextView)findViewById(R.id.selection);
            Spinner spin=(Spinner)findViewById(R.id.spinner2);
            spin.setOnItemSelectedListener(this);
            ArrayAdapter<String> aa=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,items);
            aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spin.setAdapter(aa);
        }
     
        public void onItemSelected(AdapterView<?> parent,View v, int position, long id) 
        {
            selection.setText(items[position]);
        }
     
        public void onNothingSelected(AdapterView<?> parent) 
        {
            selection.setText("");
        }
    }
    Mon, problème: les Spinner restent vides.

    Quelqu'un saurait-il m'indiquer pourquoi ?

    Merci d'avance pour votre aide.

  2. #2
    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
    La j'ai du mal à saisir l'UI....

    Tu as 3 activités (donc 3 "écrans") qui partagent le même "layout" (R.layout.main)...

    1 activité (test) ne remplit rien (et ne fait rien d'ailleurs)
    1 activité (SpinnerDepartements remplit le spinner1 (mais ne fait rien d'autre)
    1 activité (SpinnerRegions) remplit le spinner2 (mais ne fait rien d'autre)

    Quelle est l'activité initiale de l'application ? (déclarée dans le manifest comme celle à lancer par le launcher)

    Si c'est "test" => rien ne sera remplit
    Si c'est "SpinnerDepartements" => spinner1 sera remplit mais pas spinner2
    Si c'est "SpinnerRegions" => spinner2 sera remplit mais pas spinner1
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Effectivement, je m'étais rendu compte que j'avais oublié le manifeste dans les codes.

    Bref, toujours est-il que c'est bien TEST qui y est déclaré.

    Donc, dois-je rajouter y SPINNERDEPARTEMENTS/REGIONS?
    Sous quelle forme?
    -> j'avais déjà essayé mais sans succès
    -> problème de syntaxe?

    Pour le reste oui, 1 layout avec 4 "objets":
    -> 1 edittext de saisie d'une ville + 1 bouton lancement recherche
    -> 2 spinners

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut Fusion : Utilise la fonction Editer
    On peut bien mettre plusieurs objets sur un même layout quand même?
    Sinon, je ne vois pas trop, en effet.

    Ou si j'ai vraiment tout faux méthodologiquement parlant, il faut juste me remettre sur les (bons) rails...

    Ce que j'aimerais faire (peut être + facile à comprendre pour vous que mon code brut ci-dessus):

    -> 1 champs de saisie d'une ville

    -> 1 bouton de lancement de la recherche de cette ville en base

    -> 1 Spinner pour le choix du département + récupération de la valeur pour recherche en base

    -> 1 spinner pour le choix de la région + récupération de la valeur pour recherche en base

    Voilà!

  5. #5
    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
    Oui je crois qu'il y a un problème de "compréhension"...

    1 Activité = 1 fenêtre au sens Android... = 1 déclaration dans le manifest + 1 classe.

    Tu as une fenêtre (activity dans le manifest), un layout, donc a priori une seule classe "Activity".... On va partir du fait que c'est "test"...


    Déjà commence par renommer le nom de la classe... En Java, les classes doivent toutes être en "CamelCase" (majuscule à chaque mot, tout attaché)... Je te conseille aussi de garder le sens "activity" dans le nom de la classe... Par exemple: "TestActivity".
    N'oublies pas non plus de le renommer dans le manifest, sinon crash assuré.


    Ensuite, dans la fonction "onCreate()" c'est là que le "layout" va être démarré, et que les éléments d'interface vont être initialisés....
    Donc y mettre tout le code d'initialisation des spinner:
    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
     
    class TestActivity extends Activity
    {
        // traditionallement les static/final (constantes) sont en majuscules
        // dans notre cas, je te conseille quand même de passer par une ressource StringArray....
        private static final String[] REGION_ITEMS={"-choisir une région-","lorem2", "ipsum2", "dolor2", "sit2", "amet2", "consectetuer2"};
     
        private static final String[] DEPARTMENT_ITEMS = {"-choisir un département-","lorem1", "ipsum1", "dolor1",	"sit1", "amet1", "consectetuer1"};
     
        public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           // on crée les "views"
           setContentView(R.layout.main);
           // on récupère les views:
           this.selection = (TextView) findViewById(R.id.selection);
           Spinner spinner1 =(Spinner)findViewById(R.id.spinner1);
           Spinner spinner2 =(Spinner)findViewById(R.id.spinner2);
           // on les remplit
           spinner1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,DEPARTMENT_ITEMS));
           spinner2.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,REGION_ITEMS));
           // on définit les hooks
           spinner1.setOnItemSelectedListener(this);
           spinner2.setOnItemSelectedListener(this);
        }
     
     
        public void onItemSelected(AdapterView<?> parent,View v, int position, long id) 
        {
            // on récupère le texte selectionné
            String selected = (String) parent.getAdapter().getItem(position);
            // on met à jour le champ
            selection.setText(selected);
        }
        public void onNothingSelected(AdapterView<?> parent) 
        {
            selection.setText("");
        }
    }
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Super, excellent, merci!

    J'ai du faire une modification, sinon ça plantait chez moi, crash de l'application, mais là un super exemple, très clair.
    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
        public void onCreate(Bundle savedInstanceState) 
        {
            //init
            super.onCreate(savedInstanceState);
    
            //création de l'activité
            setContentView(R.layout.main);
    
            //récup des ID des composants
            selection = (TextView) findViewById(R.id.selection);
            Spinner spinner1 =(Spinner)findViewById(R.id.spinner1);
            Spinner spinner2 =(Spinner)findViewById(R.id.spinner2);
    
            //remplissage des spinner
            //spinner1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,DEPARTEMENT_ITEMS));
            ArrayAdapter<String> aaD=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,DEPARTEMENT_ITEMS);
            spinner1.setAdapter(aaD);
            
            //spinner2.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,REGION_ITEMS));
            ArrayAdapter<String> aaR=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,REGION_ITEMS);
            spinner2.setAdapter(aaR);
            
            //définition des écouteurs spinner
            spinner1.setOnItemSelectedListener(this);
            spinner2.setOnItemSelectedListener(this);
        }
    Maintenant, en lieu & place des tableaux static, le but c'est d'initialiser les Spinner avec les data BdD d'un serveur...

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Ok, comme prévu me revoilou!

    J'ai trouvé un tuto bien fait et que j'ai adapté à mon besoin (n° département + lib département) qui m'a permis de comprendre le mécanisme!

    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
    package com.database_demo;
    
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.List;
    
    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.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import android.app.ListActivity;
    import android.net.ParseException;
    import android.os.Bundle;
    import android.widget.ArrayAdapter;
    import android.widget.Spinner;
    import android.widget.SpinnerAdapter;
    import android.widget.Toast;
    
    public class Database_demo extends ListActivity {
    	
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
    
        	super.onCreate(savedInstanceState);
    	
        	String result = null;
        	InputStream is = null;
        	StringBuilder sb = null;
        	ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        	List<String> r = new ArrayList<String>();
    	    	
        	//établissement de la connexion
        	try
        	{
    	    	//http post
    	    	HttpClient httpclient = new DefaultHttpClient();
    	        HttpPost httppost = new HttpPost("http://192.168.1.10/dep.php");
    	        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    	        HttpResponse response = httpclient.execute(httppost);
    	        HttpEntity entity = response.getEntity();
    		        
    	        is = entity.getContent();
        	}
        	catch(Exception e)
        	{
                Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show();
            }
    
        	//récup des data ~> string  
            try
            {
          	  BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
          	  
          	  sb = new StringBuilder();
          	  
          	  String line = null;
          	  
          	  while ((line = reader.readLine()) != null) 
          	  {
          		 sb.append(line + "\n");
          	  }
          	  
          	  is.close();
          	  result = sb.toString();
            }
            catch(Exception e)
            {
            	Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show();
            }
            
            //décodage JSON
            try
            {
            	JSONArray jArray = new JSONArray(result);
              	JSONObject json_data=null;
               	for(int i=0;i<jArray.length();i++)
               	{
                       json_data = jArray.getJSONObject(i);                 
                       r.add(json_data.getString("CLEF_DEP") + " - " + json_data.getString("NOM"));
                }
                  setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, r));        
    }
            catch(JSONException e1)
            {
                	Toast.makeText(getBaseContext(),e1.toString() ,Toast.LENGTH_LONG).show();
            } 
            catch(ParseException e1) 
            {
                	Toast.makeText(getBaseContext(),e1.toString() ,Toast.LENGTH_LONG).show();
          	}
                
        }
    }
    le but maintenant c'est d'envoyer la liste obtenue non plus en affichage pleine page, mais dans un spinner, de manière à n'utiliser qu'une seule ligne.

    j'ai donc essayé de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, r));
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Spinner spinner1 =(Spinner)findViewById(R.id.spinner1);
    setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, r));
    spinner1.setAdapter(r);
    malheureusement l'instruction suivante fait crasher l'appli
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    spinner1.setAdapter(r);
    une idée sur le problème?
    je me gourre forcément qq part...

    merciiiiiiiiiiii

  8. #8
    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
    Citation Envoyé par steph68b Voir le message
    un tuto bien fait
    T'es sur ? Avec un appel HTTP dans le onCreate ?
    Avec un truc tout bizzare pour transformer la réponse en string ? (au lieu de simplement faire EntityUtils.toString())
    Avec une gestion toute pourrie des exceptions ?
    malheureusement l'instruction suivante fait crasher l'appli
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    spinner1.setAdapter(r);
    une idée sur le problème?
    Oui une exception dans le code... mais comme tu ne nous poste pas le logcat..... Difficile de savoir
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    ok, ok, un tuto pas terrible alors!

    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
    08-20 15:54:46.205: W/KeyCharacterMap(956): No keyboard for id 0
    08-20 15:54:46.205: W/KeyCharacterMap(956): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
    08-20 16:00:09.732: I/global(1032): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
    08-20 16:00:09.872: D/dalvikvm(1032): GC freed 2840 objects / 189224 bytes in 43ms
    08-20 16:00:09.923: D/AndroidRuntime(1032): Shutting down VM
    08-20 16:00:09.923: W/dalvikvm(1032): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
    08-20 16:00:09.923: E/AndroidRuntime(1032): Uncaught handler: thread main exiting due to uncaught exception
    08-20 16:00:09.932: E/AndroidRuntime(1032): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.database_demo/com.database_demo.Database_demo}: java.lang.ClassCastException: java.util.ArrayList
    08-20 16:00:09.932: E/AndroidRuntime(1032): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
    08-20 16:00:09.932: E/AndroidRuntime(1032): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
    08-20 16:00:09.932: E/AndroidRuntime(1032): 	at android.app.ActivityThread.access$2200(ActivityThread.java:119)
    08-20 16:00:09.932: E/AndroidRuntime(1032): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
    08-20 16:00:09.932: E/AndroidRuntime(1032): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    08-20 16:00:09.932: E/AndroidRuntime(1032): 	at android.os.Looper.loop(Looper.java:123)
    08-20 16:00:09.932: E/AndroidRuntime(1032): 	at android.app.ActivityThread.main(ActivityThread.java:4363)
    08-20 16:00:09.932: E/AndroidRuntime(1032): 	at java.lang.reflect.Method.invokeNative(Native Method)
    08-20 16:00:09.932: E/AndroidRuntime(1032): 	at java.lang.reflect.Method.invoke(Method.java:521)
    08-20 16:00:09.932: E/AndroidRuntime(1032): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    08-20 16:00:09.932: E/AndroidRuntime(1032): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    08-20 16:00:09.932: E/AndroidRuntime(1032): 	at dalvik.system.NativeStart.main(Native Method)
    08-20 16:00:09.932: E/AndroidRuntime(1032): Caused by: java.lang.ClassCastException: java.util.ArrayList
    08-20 16:00:09.932: E/AndroidRuntime(1032): 	at com.database_demo.Database_demo.onCreate(Database_demo.java:106)
    08-20 16:00:09.932: E/AndroidRuntime(1032): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    08-20 16:00:09.932: E/AndroidRuntime(1032): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
    08-20 16:00:09.932: E/AndroidRuntime(1032): 	... 11 more
    08-20 16:00:09.942: I/dalvikvm(1032): threadid=7: reacting to signal 3
    08-20 16:00:09.962: I/dalvikvm(1032): Wrote stack trace to '/data/anr/traces.txt'
    pour programmer le truc ds les règles de l'art tu ferais comment toi alors?

  10. #10
    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
    Vu le nombre de requêtes concernant le bousin... je viens poster une chtite FAQ:
    http://www.developpez.net/forums/d12...l/#post6852485

    Sinon... tu ne nous a pas tout dit !
    Il y a un Cast en "ArrayList" (c'est super dangereux ça au passage) ligne 106 de Database_demo.java
    Hors le fichier que tu nous a montré ne fait que 104 lignes....
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  11. #11
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    ok, je vais étudier ça...

    concernant le code, il est complet non, j'ai juste viré des trucs de test commentarisés

  12. #12
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    heu...... en cliquant sur ton url, je tombe sur ça, sans que je fasse quoi que ce soit...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Message
     
    Ce forum est protégé par mot de passe. Veuillez insérer ce mot de passe maintenant.
    Remarque : ceci nécessite que les cookies soient activés !
    Mot de passe :
    ensuite même si j'essaye de me reloger, il ne prend pas mon pass(?)

  13. #13
    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
    C'est que tu n'as pas accès au sous-forum "contribuez"....

    Bon... je post ici:
    Suite à de très nombreux messages (et utilisations de tutoriaux très limites du web), voici un code "correct" (et réutilisable) pour lire du JSON....

    Fichier JSONObjectTask.java
    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
     
    /**
     * 
     */
    package ....; // remplacez par le votre !
     
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpUriRequest;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.util.EntityUtils;
    import org.json.JSONObject;
     
    import android.os.AsyncTask;
     
    /**
     * 
     */
    public class JSONObjectTask extends AsyncTask<HttpUriRequest, Void, JSONObject> {
     
        /**
         * L'interface d'écoute des resultats.
         */
        public static interface OnJSONObjectResult
        {
            /**
             * Sera appelé quand l'objet JSON sera recu.
             * @param res
             */
            public  void    onJSONObjectResult(JSONObject res);
            /**
             * Sera appelé quand une erreur a eu lieu pendant la requête.
             * @param error
             */
            public  void    onJSONRequestFailure(Throwable error);
        }
     
        private OnJSONObjectResult listener;
        private Throwable error;
     
        /**
         * Définit le listener pour les résultat.
         * @param lis Le listener à utiliser.
         */
        public JSONObjectTask(OnJSONObjectResult lis)
        {
            this.listener = lis;
        }
     
        /* (non-Javadoc)
         * @see android.os.AsyncTask#doInBackground(Params[])
         */
        @Override
        protected JSONObject doInBackground(HttpUriRequest ... params) {
            JSONObject ret = null;
            try {
                HttpClient localClient = getHttpClient();
                HttpResponse response = null;
                for (HttpUriRequest request : params)
                    response = localClient.execute(request);
                HttpEntity entity = (response == null) ? null : response.getEntity();
                String entityStr = (entity == null) ? null : EntityUtils.toString(entity);
                ret = (entityStr == null) ? null : new JSONObject(entityStr);
            } catch (Throwable t) {
                Log.w("JSONTask","Error while retrieving JSON",t);
                this.error = t;
            }
            return ret;
        }
     
        /**
         * Surchargez cette fonction pour créer le lient vers un autre client, ou pour implémenter des paramètres au client.
         * @return HttpClient
         */
        protected HttpClient getHttpClient() {
            return new DefaultHttpClient();
        }
     
        /* (non-Javadoc)
         * @see android.os.AsyncTask#onPostExecute(java.lang.Object)
         */
        @Override
        protected void onPostExecute(JSONObject result) {
            if (this.listener != null) {
                if (this.error != null)
                    this.listener.onJSONRequestFailure(this.error);
                else
                    this.listener.onJSONObjectResult(result);
            }
        }
     
    }
    L'utilisation est fort simple:
    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
     
    class MyActivity extends Activity implements JSONObjectTask.OnJSONObjectResult
    {
        public void onCreate(...)
        {
              HttpGet get = new HttpGet(URL);
              new JSONObjectTask(this).execute(get);
        }
     
        public void onJSONObjectResult(JSONObject obj)
        {
             // ... on utilise l'objet ...
        }
     
        public void onJSONRequestFailure(Throwable t)
        {
             // ... on affiche l'erreur ....
        }
    }
    Si vous avez besoin d'un JSONArray.... dupliquez le fichier JSONObjectTask.java en JSONArrayTask.java, puis remplacez toutes les occurences de JSONObject (et pas seulement les 'nom simples') par JSONArray.... et voila....
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  14. #14
    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
    Bon il y a quoi ligne 106 de ton activité ?
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  15. #15
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    ok, va falloir que j'étudie ça de près, m'a l'air compliqué pour mes notions de débutant!

    par contre, si ce code est + propre restera toujours ma problématique d'intégrer la liste de data à un spinner.

  16. #16
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    ok, je reposte le tout, avec les commentaires.

    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
    package com.database_demo;
     
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.List;
     
    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.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
     
    import android.app.ListActivity;
    import android.net.ParseException;
    import android.os.Bundle;
    import android.widget.ArrayAdapter;
    import android.widget.Spinner;
    import android.widget.SpinnerAdapter;
    import android.widget.Toast;
     
    public class Database_demo extends ListActivity {
     
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
     
        	super.onCreate(savedInstanceState);
     
        	String result = null;
        	InputStream is = null;
        	StringBuilder sb = null;
        	ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        	List<String> r = new ArrayList<String>();
     
        	//établissement de la connexion
        	try
        	{
    	    	//http post
    	    	HttpClient httpclient = new DefaultHttpClient();
    	        HttpPost httppost = new HttpPost("http://192.168.1.10/dep.php");
    	        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    	        HttpResponse response = httpclient.execute(httppost);
    	        HttpEntity entity = response.getEntity();
     
    	        is = entity.getContent();
        	}
        	catch(Exception e)
        	{
                Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show();
            }
     
        	//récup des data ~> string  
            try
            {
          	  BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
     
          	  sb = new StringBuilder();
     
          	  String line = null;
     
          	  while ((line = reader.readLine()) != null) 
          	  {
          		 sb.append(line + "\n");
          	  }
     
          	  is.close();
          	  result = sb.toString();
            }
            catch(Exception e)
            {
            	Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show();
            }
     
            //décodage JSON
            try
            {
            	JSONArray jArray = new JSONArray(result);
              	JSONObject json_data=null;
               	for(int i=0;i<jArray.length();i++)
               	{
                       json_data = jArray.getJSONObject(i);                 
                       r.add(json_data.getString("CLEF_DEP") + " - " + json_data.getString("NOM"));
                }
                   //INI OK setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, r));
     
     
                	Spinner spinner1 =(Spinner)findViewById(R.id.spinner1);    	
            	    ArrayAdapter<String> aaD=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, r);
     
    Toast.makeText(getBaseContext(),r.toString() ,Toast.LENGTH_LONG).show();
    Toast.makeText(getBaseContext(),aaD.toString() ,Toast.LENGTH_LONG).show();
            	    spinner1.setAdapter(aaD);
     
     
    /*
               		Spinner spinner1 =(Spinner)findViewById(R.id.spinner1);
                	setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, r));
                	spinner1.setAdapter((SpinnerAdapter) r);
    				//spinner1.setOnItemSelectedListener(this);
    */
     
            }
            catch(JSONException e1)
            {
                	Toast.makeText(getBaseContext(),e1.toString() ,Toast.LENGTH_LONG).show();
            } 
            catch(ParseException e1) 
            {
                	Toast.makeText(getBaseContext(),e1.toString() ,Toast.LENGTH_LONG).show();
          	}
     
        }
    }
    et le 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
    08-21 09:02:48.668: I/global(259): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
    08-21 09:02:48.808: D/dalvikvm(259): GC freed 2723 objects / 184616 bytes in 43ms
    08-21 09:02:48.868: D/AndroidRuntime(259): Shutting down VM
    08-21 09:02:48.868: W/dalvikvm(259): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
    08-21 09:02:48.868: E/AndroidRuntime(259): Uncaught handler: thread main exiting due to uncaught exception
    08-21 09:02:48.878: E/AndroidRuntime(259): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.database_demo/com.database_demo.Database_demo}: java.lang.NullPointerException
    08-21 09:02:48.878: E/AndroidRuntime(259): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
    08-21 09:02:48.878: E/AndroidRuntime(259): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
    08-21 09:02:48.878: E/AndroidRuntime(259): 	at android.app.ActivityThread.access$2200(ActivityThread.java:119)
    08-21 09:02:48.878: E/AndroidRuntime(259): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
    08-21 09:02:48.878: E/AndroidRuntime(259): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    08-21 09:02:48.878: E/AndroidRuntime(259): 	at android.os.Looper.loop(Looper.java:123)
    08-21 09:02:48.878: E/AndroidRuntime(259): 	at android.app.ActivityThread.main(ActivityThread.java:4363)
    08-21 09:02:48.878: E/AndroidRuntime(259): 	at java.lang.reflect.Method.invokeNative(Native Method)
    08-21 09:02:48.878: E/AndroidRuntime(259): 	at java.lang.reflect.Method.invoke(Method.java:521)
    08-21 09:02:48.878: E/AndroidRuntime(259): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    08-21 09:02:48.878: E/AndroidRuntime(259): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    08-21 09:02:48.878: E/AndroidRuntime(259): 	at dalvik.system.NativeStart.main(Native Method)
    08-21 09:02:48.878: E/AndroidRuntime(259): Caused by: java.lang.NullPointerException
    08-21 09:02:48.878: E/AndroidRuntime(259): 	at com.database_demo.Database_demo.onCreate(Database_demo.java:100)
    08-21 09:02:48.878: E/AndroidRuntime(259): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    08-21 09:02:48.878: E/AndroidRuntime(259): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
    08-21 09:02:48.878: E/AndroidRuntime(259): 	... 11 more
    08-21 09:02:48.888: I/dalvikvm(259): threadid=7: reacting to signal 3
    08-21 09:02:48.888: I/dalvikvm(259): Wrote stack trace to '/data/anr/traces.txt'

  17. #17
    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
    Non mais la c'est plus le même code....
    Le LogCat dit: "on utilise une fonction sur un object null ligne 100 du fichier"....
    Ca veut dire que "spinner1" est null
    Ca veut dire que findViewById(R.id.spinner1) retourne null

    En regardant avant dans le code, je ne vois aucun appel à setContentView donc c'est normal !
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  18. #18
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    'tain le bouleeeeet!! mais oui!!

    par contre ça crash toujours(??), sur le setContentView maintenant, comme si main.xml n'existait pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    setContentView(R.layout.main);
    Spinner spinner1 =(Spinner)findViewById(R.id.spinner1);
    if (spinner1 == null ) 
    Toast.makeText(getBaseContext(),"meerde!!",Toast.LENGTH_LONG).show();
    else
    Toast.makeText(getBaseContext(),"yesssssss!!",Toast.LENGTH_LONG).show();
    
    ArrayAdapter<String> aaD=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, r);
    //spinner1.setAdapter(aaD);
    et j'ai bien un main.xml, of course, pour définir "spinner1":
    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
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
     
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/hello" />
     
        <Spinner
            android:id="@+id/spinner1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            tools:listitem="@android:layout/simple_spinner_item" />
    </LinearLayout>
    log
    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
    08-21 13:53:35.377: D/AndroidRuntime(729): Shutting down VM
    08-21 13:53:35.377: W/dalvikvm(729): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
    08-21 13:53:35.377: E/AndroidRuntime(729): Uncaught handler: thread main exiting due to uncaught exception
    08-21 13:53:35.387: E/AndroidRuntime(729): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.database_demo/com.database_demo.Database_demo}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
    08-21 13:53:35.387: E/AndroidRuntime(729): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
    08-21 13:53:35.387: E/AndroidRuntime(729): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
    08-21 13:53:35.387: E/AndroidRuntime(729): 	at android.app.ActivityThread.access$2200(ActivityThread.java:119)
    08-21 13:53:35.387: E/AndroidRuntime(729): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
    08-21 13:53:35.387: E/AndroidRuntime(729): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    08-21 13:53:35.387: E/AndroidRuntime(729): 	at android.os.Looper.loop(Looper.java:123)
    08-21 13:53:35.387: E/AndroidRuntime(729): 	at android.app.ActivityThread.main(ActivityThread.java:4363)
    08-21 13:53:35.387: E/AndroidRuntime(729): 	at java.lang.reflect.Method.invokeNative(Native Method)
    08-21 13:53:35.387: E/AndroidRuntime(729): 	at java.lang.reflect.Method.invoke(Method.java:521)
    08-21 13:53:35.387: E/AndroidRuntime(729): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    08-21 13:53:35.387: E/AndroidRuntime(729): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    08-21 13:53:35.387: E/AndroidRuntime(729): 	at dalvik.system.NativeStart.main(Native Method)
    08-21 13:53:35.387: E/AndroidRuntime(729): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
    08-21 13:53:35.387: E/AndroidRuntime(729): 	at android.app.ListActivity.onContentChanged(ListActivity.java:236)
    08-21 13:53:35.387: E/AndroidRuntime(729): 	at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:201)
    08-21 13:53:35.387: E/AndroidRuntime(729): 	at android.app.Activity.setContentView(Activity.java:1622)
    08-21 13:53:35.387: E/AndroidRuntime(729): 	at com.database_demo.Database_demo.onCreate(Database_demo.java:97)
    08-21 13:53:35.387: E/AndroidRuntime(729): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    08-21 13:53:35.387: E/AndroidRuntime(729): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
    08-21 13:53:35.387: E/AndroidRuntime(729): 	... 11 more
    08-21 13:53:35.387: I/dalvikvm(729): threadid=7: reacting to signal 3
    08-21 13:53:35.397: I/dalvikvm(729): Wrote stack trace to '/data/anr/traces.txt'
    va me rendre dingue ce truc.........

  19. #19
    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
    Haaa ben là tu hérites de la classe ListActivity pour ton activité....

    Cette classe a besoin d'un ListView avec comme identifiant "android:id/list", ce qui n'est pas le cas....

    A noter que ListActivity ne fait quasiment rien (sauf binder un ListView), donc autant ne pas l'utiliser du tout...
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  20. #20
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    oh laaaa, commence à plus rien capter moi.

    Ok, listActivity pas glop, d'accord, juste un tuto qui était comme ça, pas un choix de ma part.

    Donc pour refaire ça en héritant de Activity, que faudrait-il changer dans le code source alors?

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

Discussions similaires

  1. initialisation d'une liste
    Par reda24 dans le forum Général Python
    Réponses: 2
    Dernier message: 21/12/2010, 11h48
  2. Réponses: 13
    Dernier message: 06/02/2010, 16h53
  3. [AC-2003] Initialisation d'une liste déroulante à l'aide du SQL
    Par lil404 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 10/04/2009, 09h47
  4. Initialisation d'une liste avec une classe
    Par Poischack dans le forum Général Python
    Réponses: 2
    Dernier message: 26/12/2007, 23h52
  5. [STL] Initialisation d'une list
    Par franc82 dans le forum SL & STL
    Réponses: 2
    Dernier message: 23/07/2007, 08h20

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