また、クラッシュレポートが飛んできた。

また、クラッシュレポートが飛んできました。

ちなみに前回のクラッシュレポート

java.lang.NullPointerException
at org.buskuru.tokyu.activity.RouteActivity.onClick(RouteActivity.java:113)
at android.view.View.performClick(View.java:2538)
at android.view.View$PerformClick.run(View.java:9152)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3691)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
at dalvik.system.NativeStart.main(Native Method)

の原因は、どうやら、経路検索ボタン押下時、乗車バス停もしくは降車バス停が未選択だとぬるぽで落ちるらしい。
まさかバス停選択しないで経路検索するとはね、、、せっかちな人がいるもんだ。
まあまあ、ちゃんとエラーチェックしないとね。

で、今回のクラッシュはコレだ。

java.lang.IllegalArgumentException: View not attached to window manager
at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:355)
at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:200)
at android.view.Window$LocalWindowManager.removeView(Window.java:432)
at android.app.Dialog.dismissDialog(Dialog.java:278)
at android.app.Dialog.access$000(Dialog.java:71)
at android.app.Dialog$1.run(Dialog.java:111)
at android.app.Dialog.dismiss(Dialog.java:268)
at org.buskuru.tokyu.activity.NavigationActivity$1.onPageFinished(NavigationActivity.java:109)
at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:282)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3701)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
at dalvik.system.NativeStart.main(Native Method)

何だ、こりゃ!?

調べた結果、プログレスダイアログをdismiss()する場所が悪いらしい。
onPause()でDialog#dismiss()しないと、Androidのバージョンによってはエラーになるらしい。
どこでも良い訳じゃないのね。
ちなみに僕のIS03(Android2.2)では大丈夫だったから、Android2.3とかかな〜。

奥が深いね、Androidは。。。