これと同様の質問がありますが、 MapView の onTap イベントを実装しようとしている人 (私のような人) にとって、問題がどこにあるのかは明らかではないかもしれません。問題/質問はこれです:
次のように、カスタマイズされた ItemizedOverlay を MapView に実装しようとしています。
MyCustomItemizedOverlay mOverlay = new MyCustomItemizedOverlay(drawable, mContext);
通常、アクティビティからこれを行う場合は、次を使用するだけで十分です。
MyCustomItemizedOverlay mOverlay = new MyCustomItemizedOverlay(drawable, this);
これは、さまざまなチュートリアル (Google の HelloItemizedOverlay の例を含む) で見つけることができる行であり、そのうちの 1 つからコピーした可能性があります。ただし、このコードをアクティビティのメイン スレッド以外の場所 (たとえば、AyncTask 内) に移動しようとすると、機能しthis
ません。(私のように)またはに変更しよthis
うとすると、MapView で ItemizedOverlay をタップしようとすると、次のエラーが発生します。getBaseContext()
getApplicationContext()
08-23 09:59:21.444: E/AndroidRuntime(30056): FATAL EXCEPTION: main
08-23 09:59:21.444: E/AndroidRuntime(30056): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
08-23 09:59:21.444: E/AndroidRuntime(30056): at android.view.ViewRootImpl.setView(ViewRootImpl.java:589)
08-23 09:59:21.444: E/AndroidRuntime(30056): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:326)
08-23 09:59:21.444: E/AndroidRuntime(30056): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224)
08-23 09:59:21.444: E/AndroidRuntime(30056): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149)
08-23 09:59:21.444: E/AndroidRuntime(30056): at android.app.Dialog.show(Dialog.java:277)
08-23 09:59:21.444: E/AndroidRuntime(30056): at android.app.AlertDialog$Builder.show(AlertDialog.java:932)
08-23 09:59:21.444: E/AndroidRuntime(30056): at com.myapp.MyCustomItemizedOverlay.onTap(MyCustomItemizedOverlay.java:32)
このエラーの原因は何ですか?どのように修正しますか?