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 :

"L'application s'est arretée" pour certaines versions d'Android


Sujet :

Android

  1. #1
    Candidat au Club
    Homme Profil pro
    Apprenti
    Inscrit en
    Février 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti

    Informations forums :
    Inscription : Février 2015
    Messages : 2
    Points : 2
    Points
    2
    Par défaut "L'application s'est arretée" pour certaines versions d'Android
    Bonjour,

    J'ai une application disponible sur Google Play pour laquelle je rencontre un problème gênant. Certains utilisateurs m'ont dit que quand ils ouvrent mon application, celle-ci crache directement et le message "L'application [nom de l'appli] s'est arrêtée" apparait.
    Quand j'ai commencé à programmer sur Android, j'avais exactement la même erreur avec une version Android 4.2.2 sur mon Wiko. J'avais cette erreur même en lançant un hello world ! Je me suis dit que c'était juste mon téléphone qui avait un problème, parce que l'application fonctionnait parfaitement sur le téléphone de mon frère. Mais apparemment non, parce que des Android 5.0 ou 5.0.2 ont également le problème et pas forcément avec des Wiko.

    J'ai consulté énormément de sujets sur des forums traitant du même problème mais je n'ai jamais trouvé de solution. J'ai aussi créé mon sujet sur Stackoverflow mais pas de réponse.

    Voici l'erreur qui survient si je lance l'appli sur mon Wiko 4.2.2 :

    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
    08-19 21:27:35.135 26504-26504/com.histoire_horreur E/AndroidRuntime: FATAL EXCEPTION: main
                                                                      java.lang.NoClassDefFoundError: com.histoire_horreur.Listener.ScrollListener
                                                                          at com.histoire_horreur.MainActivity.createView(MainActivity.java:59)
                                                                          at com.histoire_horreur.MainActivity.onCreate(MainActivity.java:47)
                                                                          at android.app.Activity.performCreate(Activity.java:5122)
                                                                          at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1150)
                                                                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2315)
                                                                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2403)
                                                                          at android.app.ActivityThread.access$600(ActivityThread.java:165)
                                                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373)
                                                                          at android.os.Handler.dispatchMessage(Handler.java:107)
                                                                          at android.os.Looper.loop(Looper.java:194)
                                                                          at android.app.ActivityThread.main(ActivityThread.java:5391)
                                                                          at java.lang.reflect.Method.invokeNative(Native Method)
                                                                          at java.lang.reflect.Method.invoke(Method.java:525)
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
                                                                          at dalvik.system.NativeStart.main(Native Method)
    Android Studio ne souligne aucune ligne dans mon code pour me dire que la classe ScrollListener n'est pas trouvée. ScrollListener est une classe que j'ai créé et qui existe bien. Je l'ai bien importé. J'ai même essayé de la renommer mais sans succès. Bref, j'ai décidé de supprimer le ligne 59 pour voir si ça corrigeait mon problème. Quand je l'ai fait, voici l'erreur qui est sortie :

    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
    08-19 21:33:09.317 26953-26953/com.histoire_horreur E/AndroidRuntime: FATAL EXCEPTION: main
                                                                      java.lang.NoClassDefFoundError: android.support.v7.view.menu.MenuBuilder
                                                                          at android.support.v7.app.AppCompatDelegateImplV7.initializePanelMenu(AppCompatDelegateImplV7.java:1232)
                                                                          at android.support.v7.app.AppCompatDelegateImplV7.preparePanel(AppCompatDelegateImplV7.java:1296)
                                                                          at android.support.v7.app.AppCompatDelegateImplV7.doInvalidatePanelMenu(AppCompatDelegateImplV7.java:1591)
                                                                          at android.support.v7.app.AppCompatDelegateImplV7.access$100(AppCompatDelegateImplV7.java:91)
                                                                          at android.support.v7.app.AppCompatDelegateImplV7$1.run(AppCompatDelegateImplV7.java:130)
                                                                          at android.os.Handler.handleCallback(Handler.java:800)
                                                                          at android.os.Handler.dispatchMessage(Handler.java:100)
                                                                          at android.os.Looper.loop(Looper.java:194)
                                                                          at android.app.ActivityThread.main(ActivityThread.java:5391)
                                                                          at java.lang.reflect.Method.invokeNative(Native Method)
                                                                          at java.lang.reflect.Method.invoke(Method.java:525)
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
                                                                          at dalvik.system.NativeStart.main(Native Method)
    Cette erreur est un mystère pour moi. Je n'ai utilisé MenuBuilder nulle part. Pouvez-vous m'aider parce que je ne sais plus quoi essayer ?

    Pour information j'ai déjà essayé cette solution : http://blog.rolandl.fr/2015-02-08-an...at-v7-v21.html
    Et j'ai essayé de créer mon application sur plusieurs PC. Toujours la même erreur.

    Je me souviens qu'un ami, pour que je puisse coder sur mon téléphone, m'avait fait changer ceci :
    MainActivity extends AppCompatActivity { ... }
    Par quelque chose dans le genre :
    MainActivity extends Activity { ... }
    Et le bug disparaissait. Le problème c'est que ce n'est pas une solution viable puisque ça faisait disparaitre le menu du haut.

  2. #2
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    A mon avis c'est un problème venant du support des composants.
    Souvent quand j'ai cela, ça crashe sans avertissement.
    Rem: ça devrait planter dans les émulateurs.
    Je te conseille d'en tester plusieurs avec des sdk correspondant (level 14, 16, 24...).

    Pour une application que je crée pour l'instant, j'ai des objets avec le support de la v7 et de la v4.

    android.support.v7.app.AppCompat


    Tes activity(ies) devront probablement être définies comme suit:
    (voici pour MainActivity)

    MainActivity extends Activity


    MainActivity extends AppCompatActivity

    Ceci à mon avis, ça pue, je n'ai jamais vu un code pareil:
    android.support.v7.app.ActionBarActivity

    Reste dans les standards avec v7, v4 et évite les SherlockBar... ça c'était bon il y a quelques années avant que ne soit dévelopé les librairies de support d'anciennes versions.


    Edit: tu peux également avoir un problème de Context.
    Tu as peut-être 2 erreurs en fait.

    Que tu sois dans une Activity ou dans un Fragment, le context n'est pas le même.
    Activity => getApplicationContext() ou this ou MainActivity.this par exemple
    Fragment => Activity.getContext() ou getContext()
    Si la réponse vous a aidé, pensez à cliquer sur +1

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 475
    Points : 586
    Points
    586
    Par défaut
    J'ai aussi eu des retours avec la version 4.2 et des Wiko notamment. La solution était de modifier le proguard. Je ne sais plus exactement ce que j'ai fait, mais tu as des solutions :
    http://blog.rolandl.fr/2015-02-08-an...at-v7-v21.html

  4. #4
    Candidat au Club
    Homme Profil pro
    Apprenti
    Inscrit en
    Février 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti

    Informations forums :
    Inscription : Février 2015
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Après beaucoup de recherche j'ai finalement résolu une partie de mon problème.

    Il suffisait de modifier comme suit :

    Nom : 00.png
Affichages : 784
Taille : 22,8 Ko

    Par contre j'ai toujours un problème avec l'histoire du ScrollListener. J'ai trouvé la même erreur que moi là-dessus : https://forums.xamarin.com/discussio...ound-exception
    Ça a l'air d'être un problème de compatibilité. Sur beaucoup de sujets ils disent d'utiliser le ViewTreeObserver, mais je n'arrive pas à faire ce que je veux avec. C'est-à-dire : lorsqu'on scroll et qu'on arrive en bas, je le détecte pour charger de nouvelles choses

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    scrollView = (ScrollView) findViewById(R.id.scrollView);
            scrollView.setOnScrollChangeListener(new ScrollListener(this));
    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
    @TargetApi(Build.VERSION_CODES.M)
    public class ScrollListener implements View.OnScrollChangeListener {
     
        ScrollingActivity context;
     
        public ScrollListener(ScrollingActivity context) {
            this.context = context;
        }
     
        @Override
        public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
            ScrollView scrollView = (ScrollView) v;
            View view = (View) scrollView.getChildAt(scrollView.getChildCount() - 1);
            int diff = (view.getBottom() - (scrollView.getHeight() + scrollY));
            int oldDiff = (view.getBottom() - (scrollView.getHeight() + oldScrollY));
            // Si on a atteint le bas de la scrollView et qu'on était en train de descendre
            if(diff == 0 && oldDiff > 0) {
                context.endOfScroll();
            }
        }
    }
    Apparemment c'est cette ligne qui dérange :
    scrollView.setOnScrollChangeListener(new ScrollListener(this));
    La fonction setOnScrollChangeListener n'est pas compatible. Mais alors comment faire ?

Discussions similaires

  1. Mybase est il suffisant pour mon application?
    Par jeff69 dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/10/2006, 12h39
  2. Manipulations binaires : savoir si un bit est "set"
    Par DiGiTAL_MiDWAY dans le forum Général Python
    Réponses: 2
    Dernier message: 18/09/2005, 16h42
  3. [Info] Eclipse est-il gratuit pour développer une application ?
    Par kaishef dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 12/04/2005, 11h04

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