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 に答える