WebView.loadUrl()仅适用于每次第二次调用

时间:2012-12-30 20:28:40

标签: android android-webview

我有一个包含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中。在第二次单击时,调用onPageStarted(),然后调用onPageFinished()两次,并将url加载到WebView中。如果我然后尝试加载其他网址,则流程重新开始,再次需要两次点击。

我的目标Android SDK是17,min SDK是8.我正在测试Nexus 7。

我需要做些什么才能让WebView加载首次点击的网址?我该如何调试这些问题?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

尝试添加

webView.reload();
在你打电话之前

webView.loadUrl(...);

这个解决方案对我有帮助,比如