【发布时间】:2013-07-24 15:01:40
【问题描述】:
我有一个包含 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?以及如何调试此类问题?
【问题讨论】:
-
你好,也许你应该尝试关闭缓存:webView.getSettings().setAppCacheEnabled(false);请参阅有关缓存清除的此线程:stackoverflow.com/questions/2465432/…
-
您好,谢谢,但我没有启用缓存(默认情况下禁用)。尽管如此,由于两个菜单项的 url 发生了变化,我可以使用相应页面的缓存版本(事实上,我计划稍后启用缓存),但是 WebView 在第一次单击时根本没有变化...