0

我有一个包含 WebView 的活动:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    webView = new WebView(this);
    setContentView(webView);
    webView.getSettings().setUserAgentString(MY_CLIENT);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setUseWideViewPort(true);
    webView.setWebViewClient(new MyWebViewClient());
}

我的活动定义了 2 个菜单项,这将导致加载 2 个不同的 URL URL1 和 URL2:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.menu_url1:
        webView.loadUrl(URL1);
        return true;
    case R.id.menu_url2:
        webView.loadUrl(URL2);
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

但是,仅在第二次选择相应的菜单项时才加载 URL。在 MyWebViewClient.onPageStarted() 和 MyWebViewClient.onPageFinished() 中设置断点显示,在第一次点击时,onPageFinished() 被调用,但 url 没有加载到 WebView 中。在第 2 次单击时,调用 onPageStarted(),然后调用两次 onPageFinished(),并将 url 加载到 WebView 中。如果我然后尝试加载另一个 URL,则该过程重新开始,并且需要再次单击两次。

我的目标 Android SDK 是 17,最小 SDK 是 8。我在 Nexus 7 上进行测试。

我该怎么做才能使 WebView 为第一次点击加载 URL?以及如何调试此类问题?

4

2 回答 2

0

看起来问题与我尝试加载的 URL 有关 - 其​​他 URL 工作得很好。因为对于我要加载的那些,我总是必须执行两次 loadURL() 调用,我现在只是在代码中完全这样做 - 奇怪的解决方法,但到目前为止有效。我必须查看网址,我想...

于 2012-12-31T12:16:37.237 回答
0

尝试添加

webView.reload();

在你打电话之前

webView.loadUrl(...);

这个解决方案可以帮助我解决像你这样的问题

于 2013-07-24T06:22:52.920 回答