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 :

Comment savoir ce qui fait crasher mon application


Sujet :

Android

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 24
    Points : 18
    Points
    18
    Par défaut Comment savoir ce qui fait crasher mon application
    Hello, comment allez-vous en ce radieux jour de mai ? ?

    J'essaie de programer un jeu de flashcards :

    - 1) MainActivity.java
    - 2) InitFlashcards.java
    - 3) PlayFlashcards.java

    1 ) MainActivity.java > l'utilisateur choisit une activité : "Flashcards" ou "Quizz"

    2) Quand l'utilisateur a cliqué sur le RadioButton "Flashcards" il arrive sur l'activité "InitFlashcards.java". Dans cette activité, il renseigne le nombre de mots de la série grâce à un Spinner. Jusqu'ici tout va bien. L'utilisateur valide alors son choix en cliquant sur "Play Flashcards Now !"

    3) À ce moment, l'activité "PlayFlashcards.java" devrait s'afficher et l'utilisateur devrait commencer à jouer aux flashcards.

    Malheureusement, lorsqu'on clique sur "Play Now", l'application plante inopinément. D'autre part je n'ai pas pu localiser les logs. Est-ce ADB ? DDMS ? l'onglet DEBUG dans Eclipse ? Est-ce que je dois installer une app directement sur ma tablette pour accéder aux logs de mon programme qui s'exécute dessus ?

    Je me permets de coller ci-dessous des portions de ce programme.

    MainActivity.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
     
    public class MainActivity extends Activity {
        ...
        @Override
        protected void onCreate(Bundle savedInstanceState) {
      	super.onCreate(savedInstanceState);
    	setContentView(R.layout.activity_main);
        }
        ...
        public void initFlashcards(View view) {
        	Intent intent = new Intent(this, InitFlashcards.class);
        	startActivity(intent);
        }
        public void playFlashcards(View view) { 
        	Intent intent = new Intent(this, PlayFlashcards.class);
        	startActivity(intent);
        }
        ...
    }
    activity_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
     
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity" >
     
        <RadioGroup
    	android:id="@+id/radiogroup_main"
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content"
    	android:orientation="vertical" >
     
            <RadioButton
    	    android:id="@+id/init_flashcards"  		    
        	    android:layout_width="fill_parent"
     	    android:layout_height="wrap_content"
    	    android:text="Flashcards"
    	    android:onClick="initFlashcards" />
     
            <RadioButton
    	    android:id="@+id/init_quizz"  		    
    	    android:layout_width="fill_parent"
    	    android:layout_height="wrap_content"
    	    android:text="Quizz"
                android:onClick="initQuizz" />
     
      </RadioGroup>
     
    </LinearLayout>
    activity_init_flashcards.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
     
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        tools:context=".InitFlashcards" >
     
      	<Spinner
    	    android:id="@+id/spinner_init1"
    	    android:layout_width="wrap_content"
       	    android:layout_height="wrap_content"
    	    android:entries="@array/ui_num_of_words_per_serial" 
    	    android:prompt="@string/choose_num_of_words" />
     
      	<Button
    	    android:id="@+id/play_flashcards_now"  		    
                android:layout_width="wrap_content"
    	    android:layout_height="wrap_content"
    	    android:text="Play FLashcards Now"
    	    android:onClick="playFlashcards" />
     
    </LinearLayout>
    InitFlashcards.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
     
    package com.example.europeanvocab;
     
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
     
    public class InitFlashcards extends Activity {
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_init_flashcards);
    	}
     
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.init_flashcards, menu);
    		return true;
    	}
     
    }
    PlayFlashcards.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
     
    package com.example.europeanvocab;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
     
    public class PlayFlashcards extends Activity {
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_play_flashcards);
    	}
     
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.play_flashcards, menu);
    		return true;
    	}
     
    }
    Normalement, puisque le bouton "Play Flashcards Now" comporte android:onClick="playFlashcards" l'activié devrit se lancer au lieu de planter . Est-ce que quelqu'un peut m'aider svp ? N'hésitez pas à me poser des questions

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Tout d'abord, dis nous ce que le logCat affiche

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Bonjour Simon,

    Je commence à peine à m'interresser à LogCat. Je ne me souvenais même plus comment y accéder. Eclipse est assez fouillé, je mets du temps à découvrir toutes les fonctionnalités.

    Merci de m'avoir orienté sur LogCat voyez ce que j'ai trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    05-03 13:29:30.032: E/AndroidRuntime(19042): FATAL EXCEPTION: main
    05-03 13:29:30.032: E/AndroidRuntime(19042): java.lang.IllegalStateException: Could not find a method playFlashcards(View) in the activity class com.example.europeanvocab.InitFlashcards for onClick handler on view class android.widget.Button with id 'play_flashcards_now'
    Voila aussi les 80 dernieres entrées du logcat (apparement rien d'autre à signaler, du moins aucune erreur fatale):
    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
     
       - 05-03 13:28:51.682: E/Trace(19042): error opening trace file: No such file or directory (2)
    05-03 13:29:18.651: E/stp_dump(113): table == NULL || table->table == NULL
    05-03 13:29:18.651: E/stp_dump(113): table == NULL || table->table == NULL
    05-03 13:29:18.681: E/CellLocation(13246): create GsmCellLocation
    05-03 13:29:19.370: E/wpa_supplicant(451): Sorted scan results
    05-03 13:29:19.370: E/wpa_supplicant(451): 36:28:34:b7:97:06 freq=2432 qual=0 noise=0 level=-42 flags=0xb
    05-03 13:29:19.370: E/wpa_supplicant(451): f4:ca:e5:e0:3c:bc freq=2462 qual=0 noise=0 level=-62 flags=0xb
    05-03 13:29:19.370: E/wpa_supplicant(451): f4:ca:e5:e0:3c:be freq=2462 qual=0 noise=0 level=-62 flags=0xb
    05-03 13:29:19.371: E/wpa_supplicant(451): 6c:2e:85:b2:73:86 freq=2437 qual=0 noise=0 level=-69 flags=0xb
    05-03 13:29:19.371: E/wpa_supplicant(451): 00:19:70:7b:37:99 freq=2462 qual=0 noise=0 level=-70 flags=0xb
    05-03 13:29:19.371: E/wpa_supplicant(451): 5c:33:8e:0c:78:65 freq=2437 qual=0 noise=0 level=-71 flags=0xb
    05-03 13:29:19.371: E/wpa_supplicant(451): f4:ca:e5:cc:49:72 freq=2422 qual=0 noise=0 level=-78 flags=0xb
    05-03 13:29:19.371: E/wpa_supplicant(451): f4:ca:e5:96:a5:f6 freq=2412 qual=0 noise=0 level=-78 flags=0xb
    05-03 13:29:19.371: E/wpa_supplicant(451): f4:ca:e5:96:a5:f4 freq=2412 qual=0 noise=0 level=-78 flags=0xb
    05-03 13:29:19.371: E/wpa_supplicant(451): f4:ca:e5:cc:49:70 freq=2422 qual=0 noise=0 level=-79 flags=0xb
    05-03 13:29:19.371: E/wpa_supplicant(451): ca:a1:d7:2e:25:5b freq=2462 qual=0 noise=0 level=-84 flags=0xb
    05-03 13:29:19.371: E/wpa_supplicant(451): 36:28:34:b7:97:04 freq=2432 qual=0 noise=0 level=-42 flags=0x2b
    05-03 13:29:19.371: E/wpa_supplicant(451): 00:16:ce:4c:4b:ea freq=2412 qual=0 noise=0 level=-83 flags=0xb
    05-03 13:29:19.371: E/wpa_supplicant(451): e0:a1:d7:2e:25:58 freq=2462 qual=0 noise=0 level=-85 flags=0xb
    05-03 13:29:19.371: E/wpa_supplicant(451): 36:28:34:b7:97:05 freq=2432 qual=0 noise=0 level=-42 flags=0xb
    05-03 13:29:19.371: E/wpa_supplicant(451): f4:ca:e5:e0:3c:bd freq=2462 qual=0 noise=0 level=-62 flags=0xb
    05-03 13:29:19.371: E/wpa_supplicant(451): 52:33:8e:0c:78:65 freq=2437 qual=0 noise=0 level=-69 flags=0xb
    05-03 13:29:19.371: E/wpa_supplicant(451): 0a:19:70:7b:37:99 freq=2462 qual=0 noise=0 level=-70 flags=0xb
    05-03 13:29:19.371: E/wpa_supplicant(451): f4:ca:e5:cc:49:71 freq=2422 qual=0 noise=0 level=-78 flags=0xb
    05-03 13:29:19.371: E/wpa_supplicant(451): f4:ca:e5:96:a5:f5 freq=2412 qual=0 noise=0 level=-78 flags=0xb
    05-03 13:29:19.371: E/wpa_supplicant(451): ca:a1:d7:2e:25:59 freq=2462 qual=0 noise=0 level=-84 flags=0xb
    05-03 13:29:19.371: E/stp_dump(113): table == NULL || table->table == NULL
    05-03 13:29:19.371: E/stp_dump(113): table == NULL || table->table == NULL
    05-03 13:29:19.382: E/wpa_supplicant(451): WPS: WFA subelement id=0 len=1
    05-03 13:29:19.382: E/wpa_supplicant(451): WPS: WFA subelement id=0 len=1
    05-03 13:29:19.382: E/wpa_supplicant(451): WPS: WFA subelement id=0 len=1
    05-03 13:29:19.382: E/wpa_supplicant(451): WPS: WFA subelement id=0 len=1
    05-03 13:29:19.382: E/wpa_supplicant(451): WPS: WFA subelement id=0 len=1
    05-03 13:29:19.382: E/wpa_supplicant(451): WPS: WFA subelement id=0 len=1
    05-03 13:29:19.468: E/stp_dump(113): table == NULL || table->table == NULL
    05-03 13:29:19.468: E/stp_dump(113): table == NULL || table->table == NULL
    05-03 13:29:20.160: E/stp_dump(113): table == NULL || table->table == NULL
    05-03 13:29:20.160: E/stp_dump(113): table == NULL || table->table == NULL
    05-03 13:29:20.161: E/wpa_supplicant(451): Sorted scan results
    05-03 13:29:20.162: E/wpa_supplicant(451): 36:28:34:b7:97:06 freq=2432 qual=0 noise=0 level=-42 flags=0xb
    05-03 13:29:20.162: E/wpa_supplicant(451): f4:ca:e5:e0:3c:be freq=2462 qual=0 noise=0 level=-63 flags=0xb
    05-03 13:29:20.162: E/wpa_supplicant(451): f4:ca:e5:e0:3c:bc freq=2462 qual=0 noise=0 level=-63 flags=0xb
    05-03 13:29:20.162: E/wpa_supplicant(451): 5c:33:8e:0c:78:65 freq=2437 qual=0 noise=0 level=-66 flags=0xb
    05-03 13:29:20.162: E/wpa_supplicant(451): 6c:2e:85:b2:73:86 freq=2437 qual=0 noise=0 level=-71 flags=0xb
    05-03 13:29:20.162: E/wpa_supplicant(451): 00:19:70:7b:37:99 freq=2462 qual=0 noise=0 level=-73 flags=0xb
    05-03 13:29:20.162: E/wpa_supplicant(451): f4:ca:e5:cc:49:70 freq=2422 qual=0 noise=0 level=-78 flags=0xb
    05-03 13:29:20.162: E/wpa_supplicant(451): f4:ca:e5:96:a5:f4 freq=2412 qual=0 noise=0 level=-78 flags=0xb
    05-03 13:29:20.162: E/wpa_supplicant(451): f4:ca:e5:96:a5:f6 freq=2412 qual=0 noise=0 level=-78 flags=0xb
    05-03 13:29:20.162: E/wpa_supplicant(451): f4:ca:e5:cc:49:72 freq=2422 qual=0 noise=0 level=-79 flags=0xb
    05-03 13:29:20.162: E/wpa_supplicant(451): ca:a1:d7:2e:25:5b freq=2462 qual=0 noise=0 level=-84 flags=0xb
    05-03 13:29:20.162: E/wpa_supplicant(451): 36:28:34:b7:97:04 freq=2432 qual=0 noise=0 level=-42 flags=0x2b
    05-03 13:29:20.162: E/wpa_supplicant(451): 00:16:ce:4c:4b:ea freq=2412 qual=0 noise=0 level=-82 flags=0xb
    05-03 13:29:20.162: E/wpa_supplicant(451): e0:a1:d7:2e:25:58 freq=2462 qual=0 noise=0 level=-84 flags=0xb
    05-03 13:29:20.162: E/wpa_supplicant(451): 36:28:34:b7:97:05 freq=2432 qual=0 noise=0 level=-42 flags=0xb
    05-03 13:29:20.162: E/wpa_supplicant(451): f4:ca:e5:e0:3c:bd freq=2462 qual=0 noise=0 level=-64 flags=0xb
    05-03 13:29:20.162: E/wpa_supplicant(451): 52:33:8e:0c:78:65 freq=2437 qual=0 noise=0 level=-71 flags=0xb
    05-03 13:29:20.162: E/wpa_supplicant(451): 0a:19:70:7b:37:99 freq=2462 qual=0 noise=0 level=-73 flags=0xb
    05-03 13:29:20.162: E/wpa_supplicant(451): f4:ca:e5:96:a5:f5 freq=2412 qual=0 noise=0 level=-78 flags=0xb
    05-03 13:29:20.162: E/wpa_supplicant(451): f4:ca:e5:cc:49:71 freq=2422 qual=0 noise=0 level=-78 flags=0xb
    05-03 13:29:20.162: E/wpa_supplicant(451): ca:a1:d7:2e:25:59 freq=2462 qual=0 noise=0 level=-84 flags=0xb
    05-03 13:29:20.164: E/wpa_supplicant(451): WPS: WFA subelement id=0 len=1
    05-03 13:29:20.164: E/wpa_supplicant(451): WPS: WFA subelement id=0 len=1
    05-03 13:29:20.164: E/wpa_supplicant(451): WPS: WFA subelement id=0 len=1
    05-03 13:29:30.032: E/AndroidRuntime(19042): FATAL EXCEPTION: main
    05-03 13:29:30.032: E/AndroidRuntime(19042): java.lang.IllegalStateException: Could not find a method playFlashcards(View) in the activity class com.example.europeanvocab.InitFlashcards for onClick handler on view class android.widget.Button with id 'play_flashcards_now'
    05-03 13:29:30.032: E/AndroidRuntime(19042): 	at android.view.View$1.onClick(View.java:3585)
    05-03 13:29:30.032: E/AndroidRuntime(19042): 	at android.view.View.performClick(View.java:4091)
    05-03 13:29:30.032: E/AndroidRuntime(19042): 	at android.view.View$PerformClick.run(View.java:17072)
    05-03 13:29:30.032: E/AndroidRuntime(19042): 	at android.os.Handler.handleCallback(Handler.java:615)
    05-03 13:29:30.032: E/AndroidRuntime(19042): 	at android.os.Handler.dispatchMessage(Handler.java:92)
    05-03 13:29:30.032: E/AndroidRuntime(19042): 	at android.os.Looper.loop(Looper.java:153)
    05-03 13:29:30.032: E/AndroidRuntime(19042): 	at android.app.ActivityThread.main(ActivityThread.java:4987)
    05-03 13:29:30.032: E/AndroidRuntime(19042): 	at java.lang.reflect.Method.invokeNative(Native Method)
    05-03 13:29:30.032: E/AndroidRuntime(19042): 	at java.lang.reflect.Method.invoke(Method.java:511)
    05-03 13:29:30.032: E/AndroidRuntime(19042): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
    05-03 13:29:30.032: E/AndroidRuntime(19042): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
    05-03 13:29:30.032: E/AndroidRuntime(19042): 	at dalvik.system.NativeStart.main(Native Method)
    05-03 13:29:30.032: E/AndroidRuntime(19042): Caused by: java.lang.NoSuchMethodException: playFlashcards [class android.view.View]
    05-03 13:29:30.032: E/AndroidRuntime(19042): 	at java.lang.Class.getConstructorOrMethod(Class.java:460)
    05-03 13:29:30.032: E/AndroidRuntime(19042): 	at java.lang.Class.getMethod(Class.java:915)

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Le premier code d'erreur est assez clair.
    Il t'indique qu'il n'a pas trouvé la méthode playFlashcards(View) dans ton Activity InitFlashcards.
    En effet, tu as déclaré cette méthode dans MainActivity.

    Je te conseille de ne pas utiliser les attributs xml onClick pour spécifier les listener, mais plutôt de déclarer ces listener dans le code. Ca t'évitera de faire des fautes de ce genre. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Button btn = (Button)findViewById(R.id.btn);
    btn.setOnClickListener(new OnClickListener() {
    			@Override
    			public void onClick(View v) {
    				//Ici ton code à exécuter
    			}
    		});

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Merci pour l'aide !

Discussions similaires

  1. Réponses: 22
    Dernier message: 13/05/2010, 00h19
  2. comment trouver ce qui fait planter mon VS ?
    Par gorgonite dans le forum Visual Studio Team System
    Réponses: 3
    Dernier message: 04/06/2008, 00h40
  3. Réponses: 13
    Dernier message: 02/11/2006, 16h12
  4. comment savoir ce que fait mon pointeur??
    Par elekis dans le forum C++
    Réponses: 9
    Dernier message: 30/11/2004, 13h42
  5. Réponses: 4
    Dernier message: 16/08/2003, 14h21

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