15

Dialog ActivityにWebViewを実装し、単純なURLをWebviewにロードしています。

私のWebview設定は次のとおりです

wbView = (WebView) findViewById(R.id.wbView);
        wbView.setKeepScreenOn(true);
        wbView.getSettings().setJavaScriptEnabled(true);
        wbView.getSettings().setDomStorageEnabled(true);
        wbView.getSettings().setBuiltInZoomControls(true);
        wbView.setInitialScale(100);
        // wbView.getSettings().setUseWideViewPort(true);
        wbView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
        wbView.setWebViewClient(new MyWebViewClient());

MyWebViewClient()には

private class MyWebViewClient extends WebViewClient {
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            prgBar.setVisibility(View.GONE);
        }

        @Override
        public void onReceivedSslError(WebView view, SslErrorHandler handler,
                SslError error) {
            Log.e("Error VAGARO", error.toString());
            prgBar.setVisibility(View.GONE);
            handler.proceed();
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return false;
        }
    }

同じWebビューのアセットから2つのHTMLファイルをロードしていますが、正常に機能していますが、動的URLをロードできません。

私はグーグルでhttp://code.google.com/p/android/issues/detail?id=21177にいくつかの投稿を見つけました

私のlogcatは私を示しています

05-09 13:33:30.187: W/webcore(20054): java.lang.Throwable: EventHub.removeMessages(int what = 107) is not supported before the WebViewCore is set up.
05-09 13:33:30.187: W/webcore(20054):   at android.webkit.WebViewCore$EventHub.removeMessages(WebViewCore.java:1683)
05-09 13:33:30.187: W/webcore(20054):   at android.webkit.WebViewCore$EventHub.access$7900(WebViewCore.java:926)
05-09 13:33:30.187: W/webcore(20054):   at android.webkit.WebViewCore.removeMessages(WebViewCore.java:1795)
05-09 13:33:30.187: W/webcore(20054):   at android.webkit.WebView.sendOurVisibleRect(WebView.java:2917)
05-09 13:33:30.187: W/webcore(20054):   at android.webkit.ZoomManager.setZoomScale(ZoomManager.java:593)
05-09 13:33:30.187: W/webcore(20054):   at android.webkit.ZoomManager.access$1700(ZoomManager.java:49)
05-09 13:33:30.187: W/webcore(20054):   at android.webkit.ZoomManager$PostScale.run(ZoomManager.java:984)
05-09 13:33:30.187: W/webcore(20054):   at android.os.Handler.handleCallback(Handler.java:605)
05-09 13:33:30.187: W/webcore(20054):   at android.os.Handler.dispatchMessage(Handler.java:92)
05-09 13:33:30.187: W/webcore(20054):   at android.os.Looper.loop(Looper.java:137)
05-09 13:33:30.187: W/webcore(20054):   at android.app.ActivityThread.main(ActivityThread.java:4424)
05-09 13:33:30.187: W/webcore(20054):   at java.lang.reflect.Method.invokeNative(Native Method)
05-09 13:33:30.187: W/webcore(20054):   at java.lang.reflect.Method.invoke(Method.java:511)
05-09 13:33:30.187: W/webcore(20054):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-09 13:33:30.187: W/webcore(20054):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-09 13:33:30.187: W/webcore(20054):   at dalvik.system.NativeStart.main(Native Method)

私が行うべき変更を提案してください。

アップデート

「www.facebook.com」のようなURLを渡すと、このエラーが発生することがわかりましたが、「https://www.facebook.com」に置き換えると、正常に機能します。

4

5 に答える 5

8

http://私が見つけた問題は、またはのないURLが原因でしたhttps://http://そのため、URLにまたはが含まれていない場合は、このタグを追加しましたhttps://

于 2012-05-09T10:04:46.323 に答える
5

私の場合は、順番を変えて修正しました。以下のgetSettings()作業スニペットの前にloadUrlを配置しました。

mWebView = (WebView) findViewById(R.id.web_view);

// load file
mWebView.loadUrl(SERVER_URL);
mWebView.getSettings().setJavaScriptEnabled(true);

これが誰かに役立つことを願っています。

于 2012-07-27T10:43:45.337 に答える
3

LogCatでこのスタックを最後の数日間見たことがありますが、これまでは開発者をブロックしていませんでした。しかし、それは私のWebViewが時々苦労していることに関係しているのではないかと思います。それは私たちだけでなく影響を与えるバグのようです:


android.webkit.WebViewCore.removeMessages(int):void

1675        private synchronized void removeMessages(int what) {
1676            if (mBlockMessages) {
1677                return;
1678            }
1679            if (what == EventHub.WEBKIT_DRAW) {
1680                mDrawIsScheduled = false;
1681            }
1682            if (mMessages != null) {
1683                Throwable throwable = new Throwable(
1684                        "EventHub.removeMessages(int what = " + what + ") is not supported " +
1685                        "before the WebViewCore is set up.");
1686                Log.w(LOGTAG, Log.getStackTraceString(throwable));
1687            } else {
1688                mHandler.removeMessages(what);
1689            }
1690        }

mMessages例外を回避するには、キューをNULLにする必要があります。

// Message queue for containing messages before the WebCore thread is ready.

ですから、それは非常に単純です。何かが原因で、WebCoreのセットアップにはるかに多くの時間が必要になっています。107は`SET_SCROLL_OFFSET'であり、スタックトレースはZoomMangerを示しています。コード内の何かが、設定の開始中に何らかの方法でビューをアクティブにしているのかどうかを確認します。


回答requestWindowFeature(Window.FEATURE_NO_TITLE):この例外は、呼び出してから呼び出しを待つ時間が長すぎる場合にスローされますsetContentView()。どれくらい待つことができるかわかりませんでした。したがって、これら2つがこれからの最初の行になりonCreate()ます。私が正しいかどうかは時間がわかります。

幸いなことに、タグ付けされたこの警告webcoreは単なる警告であり、それ自体がアプリの他の部分に影響を与えることはありません。

悪いニュースは、私の問題はそれとは何の関係もなく、どこか他の場所から来ているようだということです。

于 2012-11-06T01:36:41.033 に答える
1

この問題は通常、URLが見つからないことを示していることに関連しています。これは404(つまり、見つからなかったURL)です。URLを変更する

于 2012-06-10T16:27:45.063 に答える
0

finish()同じを呼び出して再起動した後も同じ問題が発生しActivityます。したがって、アクティビティを単にで終了することはできないかもしれませんWebView。アクティビティを終了する前に次のことを行いましたが、機能します。

try{
        webView.stopLoading();
        ViewGroup parent = (ViewGroup)webView.getParent();
        parent.removeView(webView);
        webView.destroy();
}catch(Exception e){
        Log.e(TAG, "clear webView fail");
        e.printStackTrace();
}
 finish();
于 2013-04-09T08:23:12.007 に答える