0

次の例外が発生しています

09-19 18:09:36.551: E/AndroidRuntime(20608): FATAL EXCEPTION: Thread-2852
09-19 18:09:36.551: E/AndroidRuntime(20608): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
09-19 18:09:36.551: E/AndroidRuntime(20608):    at android.os.Handler.<init>(Handler.java:121)
09-19 18:09:36.551: E/AndroidRuntime(20608):    at android.widget.Toast$TN.<init>(Toast.java:317)
09-19 18:09:36.551: E/AndroidRuntime(20608):    at android.widget.Toast.<init>(Toast.java:91)
09-19 18:09:36.551: E/AndroidRuntime(20608):    at android.widget.Toast.makeText(Toast.java:233)
09-19 18:09:36.551: E/AndroidRuntime(20608):    at com.mid.nash.activity.MapPageFragment$3$1.run(MapPageFragment.java:156)
09-19 18:09:36.551: E/AndroidRuntime(20608):    at java.lang.Thread.run(Thread.java:856)

以下は私のコードです

myLocationOverlay.runOnFirstFix(new Runnable() {
    public void run() {
        //check if the location is within boundaries. 
        GeoPoint currentlocation = myLocationOverlay.getMyLocation();
        double latitude = (currentlocation.getLatitudeE6() / 1E6);
        double longitude = (currentlocation.getLongitudeE6() / 1E6);
        //check if user is witin boundry of Kew
        if (latitude <= RESTRICTED_UPPERLEFT_LAT && 
                latitude >= RESTRICTED_BOTTOMRIGHT_LAT && 
                longitude >= RESTRICTED_UPPERLEFT_LNG && 
                longitude <= RESTRICTED_BOTTOMRIGHT_LNG){
            mapController.animateTo(myLocationOverlay.getMyLocation());
        } else {
            myLocationOverlay.disableMyLocation();
            Toast.makeText(getActivity(), "You are out of scope.", Toast.LENGTH_LONG);
        }
    }
});

これが役立つかもしれないと考えて、このリンクを参照しました。しかし、私は言及された方法を実装できませんでした。

この例外を取り除く方法は?

4

2 に答える 2

1

トーストをランナブルから移動することをお勧めします。

Toastは、他のUI要素とともにメインスレッドで呼び出す必要があります。昨日、バックグラウンドスレッドが破壊され、トーストが閉じられないという問題が発生しました。キャッシュされたメモリをアプリから強制的に削除するまで、ホーム画面やその他のすべての場所に存在していました...トーストは素晴らしいですが、メインスレッドに保持します。

注意として、あなたは電話をかけないshow()ので、トーストはとにかく現時点では何もしません...

于 2012-09-19T17:51:03.613 に答える
1

問題は、を投稿するために必要な をRunnable持たないスレッドで が実行されていることです。あなたがする必要があるのは、 を表示するためにメッセージを送信できる を に作成することです。をまったく使用しないか、より優れた通知 UI を実装できます。LooperToastHandlerMapPageFragmentToastToast

于 2012-09-19T17:44:10.763 に答える