NullPointerException qui ne pointe vers aucune ligne dans mon code

Je travaille sur un jeu où le joueur peut glisser et déposer des objets à l'écran. J'ai une méthode privée qui me permet de simuler un événement de glisser / déposer pour tous les éléments que le joueur peut déplacer. Pour le traînage, je suis en train de laisser la vue qu'ils ont touché là où il est et en créant un nouvel ImageView et en définissant le drawable sur le dessinCache depuis la vue touché, puis en déplaçant cet ImageView nouvellement créé autour de l'écran en suivant leur doigt. Lorsque vous relâchez votre doigt (déposez la vue), myLayout.remove(movingImg); Pour l'extraire de l'écran. J'ai un problème où si je démarre un événement de traînée simulée, puis je retire manuellement un des autres éléments, je reçois un pointeur nul sur l'appel myLayout.remove (), voici la trace de Log:

 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): java.lang.NullPointerException 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2122) 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at android.view.ViewGroup.drawChild(ViewGroup.java:2506) 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2123) 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at android.view.ViewGroup.drawChild(ViewGroup.java:2506) 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2123) 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at android.view.ViewGroup.drawChild(ViewGroup.java:2506) 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2123) 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at android.view.ViewGroup.drawChild(ViewGroup.java:2506) 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2123) 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at android.view.View.draw(View.java:9032) 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at android.widget.FrameLayout.draw(FrameLayout.java:419) 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1910) 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at android.view.ViewRoot.draw(ViewRoot.java:1608) 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at android.view.ViewRoot.performTraversals(ViewRoot.java:1329) 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at android.view.ViewRoot.handleMessage(ViewRoot.java:1944) 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at android.os.Handler.dispatchMessage(Handler.java:99) 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at android.os.Looper.loop(Looper.java:126) 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at android.app.ActivityThread.main(ActivityThread.java:3997) 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at java.lang.reflect.Method.invokeNative(Native Method) 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at java.lang.reflect.Method.invoke(Method.java:491) 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 04-06 10:37:43.610: ERROR/AndroidRuntime(23203): at dalvik.system.NativeStart.main(Native Method) 

La trace ne pointe nulle part dans mon activité. L'exception est lancée chaque fois qu'elle essaie d'appeler myLayout.remove () sur la vue de traînée simulée. J'ai encerclé cette ligne avec une tentative, mais cela n'a rien fait. Je sais que c'est la ligne qui me donne des problèmes parce que si je le commentais, je n'obtiens pas une exception, mais évidemment, ma vue n'est jamais retirée de l'écran. Je développe cette application sur un Motorola xoom. Je ne sais pas si c'est un problème spécifique à un périphérique ou non. Est-ce que quelqu'un sait ce qui pourrait se passer ici?

  • Custom Dialog Android
  • Android PopupWindow et WRAP_CONTENT ne fonctionnent pas ensemble
  • Dessiner une forme ovale autour du texte sur toile
  • Copier la base de données du dossier des ressources vers les bases de données
  • Obtenir la liste des chaînes présent dans le fichier strings.xml dans Android
  • Android provoque l'arrêt des applications Cordova lors de l'utilisation des plugins Cordova Camera and Capture
  • C'est l'endroit où l'enregistrement .removeView () est appelé:

      @Override public void onAnimationEnd(Animation animation) { // TODO Auto-generated method stub Log.i(myTag, "Animation End"); try { //myLayout.removeView(simulateMovingImg); //This is the line that is throwing a null pointer simulateMovingImg.setVisibility(View.GONE); //This is how I am currently getting around the issue params = new LayoutParams(oneImg.getWidth(),oneImg.getHeight()); // While its moving it appears larger than normal simulateMovingImg.setLayoutParams(params); // so I set it back to the normal size if(whichTarget == true){ targetImg.setImageDrawable(simulateMovingImg.getDrawable()); //targetImg is one of the 'drop zones' so I set its // drawable to make it seem like the view was 'dropped' into this zone }else{ target1Img.setImageDrawable(simulateMovingImg.getDrawable()); // same with target1Img. } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } iAmDone = true; } }); 

    C'est à l'intérieur d'un AnimationListener pour l'animation de traduction qui déplace mon ImageView d'où il commence à être "abandonné"

  • Échec lorsque j'ai essayé de mettre à jour mon application
  • En sachant quand la carte a cessé de faire défiler (comme "moveend" dans javascript API)
  • Cygwin pour la programmation Android-NDK
  • Différence dans les modèles de mise en page Android entre les versions 2.3.3 et 4+
  • Impossible de transmettre les données à l'usure Android (émulateur)
  • Lancez le navigateur par défaut depuis le navigateur de portail captif de Android (CaptivePortalLogin)
  • 5 Solutions collect form web for “NullPointerException qui ne pointe vers aucune ligne dans mon code”

    Android fera une exception lorsque vous modifiez la hiérarchie de la vue dans animationEnd.

    Tout ce que vous avez à faire est de reporter votre appel comme ceci:

     @Override public void onAnimationEnd(Animation animation) { new Handler().post(new Runnable() { public void run() { myLayout.removeView(simulateMovingImg); } }); } 

    Je suppose que c'est un problème multi-thread. Il semble que la boucle interne de rendu Android rencontre un pointeur nul en raison du fait que vous avez supprimé l'image d'un autre thread. Le cadre UI Android est simple et toutes les modifications apportées à l'interface utilisateur doivent se produire dans le thread UI. Si c'est le problème que vous rencontrez, vous pouvez simplement déléguer votre appel au thread UI.

    Il existe ici des informations connexes: le threading Android

    Pouvez-vous essayer ceci, pour s'assurer que simulateMovingImg est présent

      if (myLayout.indexOfChild() >= 0) { myLayout.removeView(simulateMovingImg); } 

    J'ai rencontré ce problème après avoir mis à jour l'appcompat-v7. La dernière version stable de la dépendance mentionnée ci-dessus est maintenant:

      compile 'com.android.support:appcompat-v7:23.2.1' 

    J'ai légèrement modifié une réponse acceptée (cela fonctionne aussi) pour éviter les gestionnaires.

     @Override public void onAnimationEnd(Animation animation) { imageView.post(new Runnable() { @Override public void run() { layout.removeView(imageView); } }); } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.