ScoreNinja provoque java.lang.RuntimeException: Impossible de créer un gestionnaire intérieur thread qui n'a pas appelé Looper.prepare ()

StackOverflow https://stackoverflow.com/questions/2603846

  •  25-09-2019
  •  | 
  •  

Question

Je suis en train d'ajouter ScoreNinja, le système de score global élevé, à mon jeu Android, et il fonctionne très bien quand je charge sur mon téléphone, mais quand je le libérer dans la nature, je suis arrivé des rapports d'erreur en disant:

java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

Voici une partie de la pile d'appel:

android.os.Handler.<init>(Handler.java:121)
android.app.Dialog.<init>(Dialog.java:99)
android.app.AlertDialog.<init>(AlertDialog.java:65)
android.app.AlertDialog.<init>(AlertDialog.java:61)
android.app.AlertDialog$Builder.create(AlertDialog.java:797)
android.app.AlertDialog$Builder.show(AlertDialog.java:812)
com.scoreninja.adapter.ScoreNinjaAdapter.show(ScoreNinjaAdapter.java:136)
com.scoreninja.adapter.ScoreNinjaAdapter.show(ScoreNinjaAdapter.java:99)

Je pensais que le fil conducteur avait prepare () appelé automatiquement, et sinon, pourquoi ça marcherait bien pour moi, mais pas quelqu'un d'autre?

Était-ce utile?

La solution

Je ne suis toujours pas sûr de ce qui était faux, mais pour tous ceux qui ont le même problème, il fonctionne très bien si vous cassez votre jeu dans une activité de menu et un jeu d'activité. Avoir l'activité de jeu retourne un score à l'activité de menu sur un jeu sur, puis appeler tous les trucs ScoreNinja de l'activité de menu.

Autres conseils

Je suppose que vous créez le gestionnaire extérieur du thread principal. Créez le gestionnaire dans le onCreate de votre activité ou quelque chose de similaire, quelque chose qui va sans aucun doute dans le thread principal, et vous pouvez appeler handler.post(runnable) dans votre autre thread.

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