2

我正在尝试将全球高分系统 ScoreNinja 添加到我的 Android 游戏中,当我将它加载到手机上时它运行良好,但是当我将它释放到野外时,我收到崩溃报告说:

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

这是调用堆栈的一部分:

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)

我认为主线程已经自动调用了 prepare() ,如果没有,为什么它对我来说可以正常工作,但对其他人却不行?

4

2 回答 2

1

我仍然不确定出了什么问题,但是对于任何有同样问题的人来说,如果你把你的游戏分成一个菜单活动和一个游戏活动,它就可以正常工作。让游戏活动在游戏结束时将分数返回给菜单活动,然后从菜单活动中调用所有 ScoreNinja 东西。

于 2010-05-27T21:42:48.707 回答
0

我想你正在主线程之外创建处理程序。onCreate在您的活动或类似的东西中创建处理程序,肯定会在主线程中,然后您可以handler.post(runnable)在其他线程中调用。

于 2010-04-08T22:27:56.687 回答