WebView が、ZOOM操作で落ちる??

久しぶりに、WebView アプリを API Level 15 で、Fragment を使って書いていたら、
画面回転後に、ZOOM操作をしたら落ちる。

E/AndroidRuntime(28496): FATAL EXCEPTION: main
E/AndroidRuntime(28496): android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRootImpl$W@417b7568 is not valid; is your activity running?
E/AndroidRuntime(28496): at android.view.ViewRootImpl.setView(ViewRootImpl.java:525)
E/AndroidRuntime(28496): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:316)
E/AndroidRuntime(28496): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:230)
E/AndroidRuntime(28496): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:155)
E/AndroidRuntime(28496): at android.view.Window$LocalWindowManager.addView(Window.java:537)
E/AndroidRuntime(28496): at android.widget..setVisible(ZoomButtonsController.java:371)
E/AndroidRuntime(28496): at android.webkit.ZoomControlEmbedded.show(ZoomControlEmbedded.java:83)
E/AndroidRuntime(28496): at android.webkit.ZoomManager.invokeZoomPicker(ZoomManager.java:1396)
E/AndroidRuntime(28496): at android.webkit.WebView.startDrag(WebView.java:6933)
E/AndroidRuntime(28496): at android.webkit.WebView.handleTouchEventCommon(WebView.java:6533)
E/AndroidRuntime(28496): at android.webkit.WebView.access$2600(WebView.java:368)
E/AndroidRuntime(28496): at android.webkit.WebView$TouchEventQueue.handleQueuedMotionEvent(WebView.java:8416)
E/AndroidRuntime(28496): at android.webkit.WebView$TouchEventQueue.enqueueTouchEvent(WebView.java:8304)
E/AndroidRuntime(28496): at android.webkit.WebView.onTouchEvent(WebView.java:6245)
E/AndroidRuntime(28496): at android.view.View.dispatchTouchEvent(View.java:5553)
E/AndroidRuntime(28496): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1951)
E/AndroidRuntime(28496): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1712)
E/AndroidRuntime(28496): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
E/AndroidRuntime(28496): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
E/AndroidRuntime(28496): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
E/AndroidRuntime(28496): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
E/AndroidRuntime(28496): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
E/AndroidRuntime(28496): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
E/AndroidRuntime(28496): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
E/AndroidRuntime(28496): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
E/AndroidRuntime(28496): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
E/AndroidRuntime(28496): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
E/AndroidRuntime(28496): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
E/AndroidRuntime(28496): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
E/AndroidRuntime(28496): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2059)
E/AndroidRuntime(28496): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1419)
E/AndroidRuntime(28496): at android.app.Activity.dispatchTouchEvent(Activity.java:2364)
E/AndroidRuntime(28496): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2007)
E/AndroidRuntime(28496): at android.view.View.dispatchPointerEvent(View.java:5733)

画面回転させた後もズームが有効なままで、ページを再読み込みせず、Fragment で違うレイアウトで見せたいだけなんだけど、
stackoverflow でのやりとりを発見
http://stackoverflow.com/questions/5267639/how-to-safely-turn-webview-zooming-on-and-off-as-needed

かなり前から存在する問題だった。
ここに、Android 4.0.3 でダメだったという報告もあるし、

ここで、紹介された Open Handset Alliance Project の
Issue 15694 のように、WebView を継承したものを用意なんて
したくないし、、、

Issue 3440 で言われるように、static 変数を使うのが悪いってのも解るんだけど、
Handler とか static で抱え込みたい場合もある。

画面回転した時に、一旦、WebView#destroy を call して
WebSettings # setBuiltInZoomControls(false) により
ページの再読み込みしないようにするかわりに、ズーム操作をあきらめてもらうか、
Preference:設定としてズーム操作を優先して再読み込みさせるか

使用者に選択して貰うしかないのか。

No!よくよく考えたら、、、

WebSettings の setDisplayZoomControls を使って、false にして
Zoom の表示を消せばいいじゃないですか。