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 :

Décryptage Logcat Eclipse


Sujet :

Android

  1. #1
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Décryptage Logcat Eclipse
    Bonjour,

    j'ai une erreur dans un projet Android. Je ne suis pas sûr de bien interpréter le LogCat d'Eclipse et de cerner correctement l'erreur du programme. Si un oeil expert pouvait me confirmer l'erreur, cela m'aiderait...
    Il semble que "_id" n'existe pas et plante le programme mais je n'ai pas de "_id" dans mon projet.
    Le plantage se produit lors de l'exécution de dataAdapter = new SimpleCursorAdapter(this, R.layout.produit_info, c, columns, to);Voici la fonction dans laquelle se situe la ligne qui plante l'application:
    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
    private void displayListView() {
    		Cursor c = produitBdd.getProduitAll();
     
    		// les colonnes de la Bdd à afficher
    		  String[] columns = new String[] {
    		    ProduitsBDD.COL_DATE, ProduitsBDD.COL_MAGASIN, ProduitsBDD.COL_TITRE, ProduitsBDD.COL_PRIX, ProduitsBDD.COL_QUANTITE};
     
    		// les vues XML à afficher avec produit_info
    		  int[] to = new int[] {
    		    R.id.editTextProduit_Info_Date,
    		    R.id.editTextProduit_Info_Magasin,
    		    R.id.editTextProduit_Info_Nom_produit,
    		    R.id.editTextProduit_Info_Prix,
    		    R.id.editTextProduit_Info_Quantite,		   
    		  };
     
    		// create the adapter using the cursor pointing to the desired data
    		  //as well as the layout information
    		  dataAdapter = new SimpleCursorAdapter(this, R.layout.produit_info, c, columns, to);
     
    		  ListView listView = (ListView) findViewById(R.id.lvListe);
    		  Assign adapter to ListView
    		  listView.setAdapter(dataAdapter);
     
    	}
    Voici le logcat :
    02-05 14:21:52.399: W/dalvikvm(3570): threadid=1: thread exiting with uncaught exception (group=0x40018578)
    02-05 14:21:52.409: E/AndroidRuntime(3570): FATAL EXCEPTION: main
    02-05 14:21:52.409: E/AndroidRuntime(3570): java.lang.RuntimeException: Unable to start activity ComponentInfo{chapon.michel.mescourses/chapon.michel.mescourses.EditerActivity}: java.lang.IllegalArgumentException: column '_id' does not exist
    02-05 14:21:52.409: E/AndroidRuntime(3570): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
    02-05 14:21:52.409: E/AndroidRuntime(3570): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
    02-05 14:21:52.409: E/AndroidRuntime(3570): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
    02-05 14:21:52.409: E/AndroidRuntime(3570): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
    02-05 14:21:52.409: E/AndroidRuntime(3570): at android.os.Handler.dispatchMessage(Handler.java:99)
    02-05 14:21:52.409: E/AndroidRuntime(3570): at android.os.Looper.loop(Looper.java:130)
    02-05 14:21:52.409: E/AndroidRuntime(3570): at android.app.ActivityThread.main(ActivityThread.java:3687)
    02-05 14:21:52.409: E/AndroidRuntime(3570): at java.lang.reflect.Method.invokeNative(Native Method)
    02-05 14:21:52.409: E/AndroidRuntime(3570): at java.lang.reflect.Method.invoke(Method.java:507)
    02-05 14:21:52.409: E/AndroidRuntime(3570): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
    02-05 14:21:52.409: E/AndroidRuntime(3570): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
    02-05 14:21:52.409: E/AndroidRuntime(3570): at dalvik.system.NativeStart.main(Native Method)
    02-05 14:21:52.409: E/AndroidRuntime(3570): Caused by: java.lang.IllegalArgumentException: column '_id' does not exist
    02-05 14:21:52.409: E/AndroidRuntime(3570): at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:314)
    02-05 14:21:52.409: E/AndroidRuntime(3570): at android.widget.CursorAdapter.init(CursorAdapter.java:111)
    02-05 14:21:52.409: E/AndroidRuntime(3570): at android.widget.CursorAdapter.<init>(CursorAdapter.java:90)
    02-05 14:21:52.409: E/AndroidRuntime(3570): at android.widget.ResourceCursorAdapter.<init>(ResourceCursorAdapter.java:47)
    02-05 14:21:52.409: E/AndroidRuntime(3570): at android.widget.SimpleCursorAdapter.<init>(SimpleCursorAdapter.java:84)
    02-05 14:21:52.409: E/AndroidRuntime(3570): at chapon.michel.mescourses.EditerActivity.displayListView(EditerActivity.java:47)
    02-05 14:21:52.409: E/AndroidRuntime(3570): at chapon.michel.mescourses.EditerActivity.onCreate(EditerActivity.java:23)
    02-05 14:21:52.409: E/AndroidRuntime(3570): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    02-05 14:21:52.409: E/AndroidRuntime(3570): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
    02-05 14:21:52.409: E/AndroidRuntime(3570): ... 11 more
    Merci d'avance.

  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
    Oui, c'est exactement cela....

    Comme indiqué dans la documentation:
    http://developer.android.com/referen...orAdapter.html
    Un CursorAdapter a besoin d'une colonne "_id" pour fonctionner.
    Cette colonne peut s'appeler telle quelle dans la base de données.
    Ou simplement être un alias vers l'identifiant existant de la "ligne".
    Ou si pas d'identifiant (il faudrait toujours qu'il y en ai un, c'est plus simple), faire simplement un alias vers ROWID.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut _id indispensable
    Merci pour votre réponse.
    Effectivement, après recherche il s'agissait bien de ça. l'_id doit être nommé tel quel.

  4. #4
    Expert éminent

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

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

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Il n'est pas non plus obligatoire de l'avoir nommé ainsi dans la table !

    C'est d'autant plus important quand on fait un "group by"

    Imaginons, que l'identifiant dans la table soit ID_PRODUIT

    Il suffit de faire:
    select ID_PRODUIT as _ID, NOM_PRODUIT, DESCRIPTIF_PRODUIT from TABLE_PRODUITS

    et on a une colonne _ID dans le cursor... (qui est la colonne "ID_PRODUIT" de la table).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Limite affichage taille Logcat eclipse
    Par Vincte dans le forum Android
    Réponses: 4
    Dernier message: 30/05/2012, 15h09
  2. Comment lancer Eclipse en incluant ses plugins
    Par eclie dans le forum Eclipse Platform
    Réponses: 8
    Dernier message: 19/02/2009, 08h45
  3. Eclipse en français
    Par Super Castor dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 02/06/2007, 15h59
  4. Eclipse Mac version et pluginUML
    Par Driden dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 09/06/2003, 19h03
  5. Servlet dans Eclipse ?
    Par unflag dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 10/04/2003, 18h46

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