我有一个包含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加载首次点击的网址?我该如何调试这些问题?
答案 0 :(得分:0)
看起来这个问题与我正在尝试加载的网址有关 - 其他网址工作得很好。因为对于我正在尝试加载的那些,我总是要执行两次loadURL()调用,我现在只是在代码中做到这一点 - 奇怪的解决方法,但到目前为止工作。我必须查看URL,想到......
答案 1 :(得分:0)
尝试添加
webView.reload();
在你打电话之前
webView.loadUrl(...);
这个解决方案对我有帮助,比如