5019


はじめまして。  
Android の `WebView` を使ったアプリの開発をしています。

`WebView` にて、モーダルウィンドウを表示した状態で `WebView` を回転させると、  
モーダルウィンドウが消えてしまいます。

たとえば、この「[モーダルウィンドウのデモ](http://syncer.jp/_demo/javascript/jquery-modal-
window/modal.html)」のモーダルウィンドウを Android の `WebView` で表示した状態で、 Android
を回転させるとモーダルが消えます。

Google Chrome や Firefox などの既存のブラウザアプリではこれが消えずに残るため、なにか方法があると思うのですがそれが分かりません。

`WebView` の回転時にリロードしないように、 `AndroidManifest.xml` に以下の記述を加えたり、

[code]

    <application
    ...
     android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
    />
    
[/code]

`MainActivity` 内で `onSavedInstance` を使って値を保存したり、

[code]

    WebView webView;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        webView = (WebView)findViewById(R.id.webView);
        webView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return false;
            }
        });
        webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    
        if(savedInstanceState == null){
            webView.loadUrl("http://syncer.jp/_demo/javascript/jquery-modal-window/modal.html");
        }
    
        webView.getSettings().setJavaScriptEnabled(true);
    }
    
    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        webView.restoreState(savedInstanceState);
    }
    
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        webView.saveState(outState);
    }
    
[/code]

いろいろと試してみたのですが、どうにも解決できません。  
この問題の解決策をご存知の方、お力添えをよろしくお願いします。


CC BY-SA 3.0
2015-01-21T19:14:26.513
5017
2015-01-21T22:04:54.843
2015-01-21T22:04:54.843
4978
7655
question
android webview
Android の WebView を回転させた時にモーダルウィンドウが消える


すみません。自己解決しました。

AndroidManifest.xmlに書いていたconfigChangesをapplicationタグではなくactivityタグに移動させたら普通に動きました。。。  
お騒がせして申し訳ないです。

ちなみに、ちゃんと動いたコードはGithubにて公開していますので同じ悩みに陥った方はご参照くださいませ。  
<https://github.com/litmon/WebView_Sample>


CC BY-SA 3.0
2015-01-21T20:32:28.697
5019
2015-01-21T20:32:28.697
7655
5017
answer