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 :

le Force Close lors du développement d'une application


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Par défaut le Force Close lors du développement d'une application
    Bonjour tout le monde

    Svp c'est ma première application sur Android, je veux faire dirigé deux boutons vers deux différentes activités, j'ai beau cherché mais aucune solution semble marcher pour moi :/. Aucun bouton ne marche, même l'application ne s'ouvre pas en demandant le "Force Close". Voici un extrait du code espérant recevoir une aide:
    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
    package com.test.pharm;
     
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.view.View;
    import android.widget.Button;
    import android.view.View.OnClickListener;
     
    public class MainActivity extends Activity {
     
     
          Button Button1;
          Button Button2;
          Intent intent;
       protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
     
            Button1 = ((Button)this.findViewById(R.id.button1));//Define name B1
            Button1.setOnClickListener((OnClickListener) this);
     
            Button2 = ((Button)this.findViewById(R.id.button2));//Define name B2
            Button2.setOnClickListener((OnClickListener) this);
     
     
       }
         public void onClick(View v) {
             switch(v.getId()){//depending on click
             case R.id.button1://Sub Page1
                startActivity(new Intent(this,Proximity.class));//if Click 1st Button
                break;
             case R.id.button2://Sub Page2
                startActivity(new Intent(this,Drugstoreslist.class));//if Click 2nd Button
                break;
     
             }
       }
    ;
       }
    Les activités Proximity et Drugstores sont bien déclarées dans le manifeste.xml (automatiquement, je les ai pas ajouté manuellement)

    Merci d'avance

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    "Force close" indique que ton application ne répond plus. Tu dois donc réaliser une quelconque opération longue, ou un traitement bloquant sur le thread graphique, ce qui est une mauvaise pratique et à ne pas faire.
    Le problème ne vient manifestement pas de l'extrait de code que tu fournis. Peux-tu nous montrer les autres classes s'il te plaît ?
    De plus, si tu as une exception dans le LogCat concernant ton application, peux-tu nous la fournir en intégralité ?
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Par défaut
    Bonsoir,

    Merci pour votre réponse

    Pour les autres classes, j'ai à peine créer des activités pour essayer le bouton, sans que j'y fasse encore des codes compliqués. En tout cas voici le code des deux classes:
    1. classe Drugstoreslist:
    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
    package com.test.pharm;
     
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
     
     
    public class Drugstoreslist extends Activity {
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_drugstoreslist);
    	}
     
    	 Intent i = getIntent();
     
     
    }
    2. classe Proximity:
    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
    package com.test.pharm;
     
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
     
    public class Proximity extends Activity {
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_proximity);
    	}
    	Intent i = getIntent();
     
    }
    Pour le Intent i=getIntent() est pour récupérer le Intent qui m'a mené dans la deuxième activité (Je ne sais pas si c'est la bonne manière ou pas )

    Et puis pour l'exception que vous m'aviez demandé, vous vouliez dire le "caused by java" qui s'affiche dans le logcat? si c'est le cas, voici le code affiché:
    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
    03-08 00:17:36.940: D/AndroidRuntime(223): Shutting down VM
    03-08 00:17:36.940: W/dalvikvm(223): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
    03-08 00:17:36.940: E/AndroidRuntime(223): Uncaught handler: thread main exiting due to uncaught exception
    03-08 00:17:36.960: E/AndroidRuntime(223): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.pharm/com.test.pharm.MainActivity}: java.lang.ClassCastException: com.test.pharm.MainActivity
    03-08 00:17:36.960: E/AndroidRuntime(223): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
    03-08 00:17:36.960: E/AndroidRuntime(223): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
    03-08 00:17:36.960: E/AndroidRuntime(223): 	at android.app.ActivityThread.access$2200(ActivityThread.java:119)
    03-08 00:17:36.960: E/AndroidRuntime(223): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
    03-08 00:17:36.960: E/AndroidRuntime(223): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    03-08 00:17:36.960: E/AndroidRuntime(223): 	at android.os.Looper.loop(Looper.java:123)
    03-08 00:17:36.960: E/AndroidRuntime(223): 	at android.app.ActivityThread.main(ActivityThread.java:4363)
    03-08 00:17:36.960: E/AndroidRuntime(223): 	at java.lang.reflect.Method.invokeNative(Native Method)
    03-08 00:17:36.960: E/AndroidRuntime(223): 	at java.lang.reflect.Method.invoke(Method.java:521)
    03-08 00:17:36.960: E/AndroidRuntime(223): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    03-08 00:17:36.960: E/AndroidRuntime(223): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    03-08 00:17:36.960: E/AndroidRuntime(223): 	at dalvik.system.NativeStart.main(Native Method)
    03-08 00:17:36.960: E/AndroidRuntime(223): Caused by: java.lang.ClassCastException: com.test.pharm.MainActivity
    03-08 00:17:36.960: E/AndroidRuntime(223): 	at com.test.pharm.MainActivity.onCreate(MainActivity.java:21)
    03-08 00:17:36.960: E/AndroidRuntime(223): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    03-08 00:17:36.960: E/AndroidRuntime(223): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
    03-08 00:17:36.960: E/AndroidRuntime(223): 	... 11 more
    03-08 00:17:36.980: I/dalvikvm(223): threadid=7: reacting to signal 3
    03-08 00:17:37.081: I/dalvikvm(223): Wrote stack trace to '/data/anr/traces.txt'

  4. #4
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Les deux lignes importantes de ta stacktrace sont celles-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    03-08 00:17:36.960: E/AndroidRuntime(223): Caused by: java.lang.ClassCastException: com.test.pharm.MainActivity
    03-08 00:17:36.960: E/AndroidRuntime(223): 	at com.test.pharm.MainActivity.onCreate(MainActivity.java:21)
    Tu as une ClassCastException, donc un problème de transtypage dans le fichier MainActivity.java à la ligne 21. Ceci correspond à la classe MainActivity du package com.test.pharm, le problème se situe dans la méthode onCreate.

    La ligne incriminée est celle-ci :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    Button1.setOnClickListener((OnClickListener) this);

    setOnCLickListener attends un View.OnClickListener en argument. Tu lui passes this (donc une instance de l'objet courant). Regardons de plus près la définition de la classe.

    public class MainActivity extends Activity { : On remarque facilement que MainActivity ne peut pas être considérée comme un OnClickListener, celui-ci n'étendant pas son interface. Il faut que tu rajoutes implements OnClickListener à la déclaration de ta classe, et que tu implémentes les méthodes correspondantes à l'interface. Tu as d'ailleurs déjà réalisé ce dernier point.

    Conclusion : je suis passé un poil vite sur ton code initial.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Par défaut
    Bonjour Snidow;

    Essayer d'implémter l'interface OnClickListener comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class MainActivity extends Activity implements OnClickListener
    et puis passer le mot clé this en paramètre dans la méthode setOnClickLilstener comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Button1.setOnClickListener(this);
    Button2.setOnClickListener(this);
    J'espère que ça va vous aider un peux.

    Bonne Chance

  6. #6
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Par défaut
    Merci merciii Infiniment.. Ca a marché ^_^

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

Discussions similaires

  1. Quelles idées avez-vous de l'utilisateur final lors du développement d'une application
    Par Hinault Romaric dans le forum Débats sur le développement - Le Best Of
    Réponses: 327
    Dernier message: 13/04/2020, 17h23
  2. Réponses: 243
    Dernier message: 03/06/2012, 14h11
  3. force close lors de l'affichage des données parsées
    Par analystedodo dans le forum Android
    Réponses: 3
    Dernier message: 12/04/2012, 12h37
  4. Force close après l'affichage d'une ListView
    Par Cuillere dans le forum Composants graphiques
    Réponses: 7
    Dernier message: 27/08/2010, 14h28

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