我有一个包含 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?以及如何调试此类问题?