Question

vieille question: « Pourquoi le fait de créer un Toast s'écraser ma demande? »

Mon application fonctionne très bien si je ne l'utilise mais si je tartines veux créer et montrer simple Toast comme ceci:

   Toast SimpleToast = Toast.makeText(getApplicationContext(), "Just a toast.",Toast.LENGTH_LONG);
   SimpleToast.setGravity(Gravity.TOP, 0, 0);
   SimpleToast.show();

Je reçois ces lignes dans le journal, puis l'application se bloque:

NotificationService   enqueueToast pkg=games.MyAppName callback=android.app.ITransientNotification$Stub$Proxy@49603368 duration=1
ResourceType          No package identifier when getting name for resource number 0x00000000
AndroidRuntime        Shutting down VM
dalvikvm              threadid=3: thread exiting with uncaught exception (group=0x4001b188)
AndroidRuntime        Uncaught handler: thread main exiting due to uncaught exception
AndroidRuntime        java.lang.NullPointerException

Je l'ai vérifié et revérifié le code ci-dessus est ce qui fait planter. Je suis en cours d'exécution sur l'émulateur que je ne dispose pas actuellement d'un téléphone Android.

Était-ce utile?

La solution

Toutes les caractéristiques qui sont considérés comme « blocage » doivent être créées à l'intérieur d'un fil. Cela inclut les boîtes de dialogue modales, l'écriture aux préférences partagées, l'accès urls et assez curieusement, des messages simples de pain grillé.

Ces choses fonctionnent lorsqu'il est appelé à partir du onCreate de l'activité, mais nécessitent un fil / configuration du gestionnaire pour pouvoir être appelé partout.

Autres conseils

Au meilleur de ma connaissance, vous ne pouvez pas montrer un toast avec un contexte d'application, vous devez montrer avec un contexte d'activité. Le toast est pas lié à votre application, il est lié à l'activité que vous le montrer sur. Au lieu d'utiliser getApplicationContext(), essayez d'utiliser une variable ctx nommée contenant une référence à votre activité.

Bonne chance!

Pour une raison quelconque, getApplicationContext renvoie null. Essayez "ActivityName.this" à la place, sur votre méthode onClick (), à l'intérieur du Listener.

@Override
public boolean onTouch(View V, MotionEvent event) {
 ...
 Toast toast = Toast.makeText(V.getContext(), ...

où V est votre vue fonctionnera très bien. Vous pouvez également utiliser appConntext () dans les constructeurs.

Il semble que vous avez essayé de déréférencer un endroit de pointeur NULL, essayez d'enfoncer dans le débogueur et voir où exactement. Il pourrait être l'appel .setGravity. Cela indiquerait que Toast.makeText n'a pas créer votre pain grillé. Il faut noter que les pains grillés peuvent être créés et affichés d'une activité ou service.

Enveloppez le code dans un try-catch et vérifiez la trace de la pile sur l'exception qui est levée. Cela ressemble à une méthode de rappel sur une activité est appelée lorsque vous ne vous attendiez pas à.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top