编辑:我多年前曾在这个项目上,不幸的是,如果任何的答案在给定的情况下工作,我不能验证。
我有一个的WebView困难时期应该表现出我们的博客。 当initilized,它工作得很好。 用户可以浏览到的WebView中的不同环节。 要返回到博客上,有哪些应该再次载入主要博客网站的网页视图外的按钮。
问题是,没有什么是第二次调用使用loadURL后加载。 这里是我的代码:
private WebView wv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.blog);
wv = (WebView) findViewById(R.id.blog_webview);
wv.getSettings().setJavaScriptEnabled(true);
wv.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon {
MyLog.logDump("onPageStarted: " + url);
}
@Override
public void onPageFinished(WebView view, String url) {
MyLog.logDump("onPageFinished: " + url);
}
});
wv.loadUrl(Constants.BLOG_URL);
}
我的OnClickListener调用的函数如下:
public void reLoadUrl() {
wv.loadUrl(Constants.BLOG_URL);
}
但是,尽管在onPageFinished和onPageStarted日志显示,我的wv.loadUrl被调用,并且,它的加载正确的URL,在web视图本身的内容不会改变。 我试着清除缓存,历史,视图,尝试了不同的WebSettings,试图用webView.goBack() - 不会导致。 还有那些思想不工作: 奇怪的WebView GoBack的问题在android系统
有时,reLoadUrl显示了预期的结果 - 但一旦失败,它不再能够进行重新工作。 任何想法可能是这样吗? 我曾尝试阅读的WebView代码,但我找不到任何可以帮助我。
我可以补充一点的是,我们使用的是一些广告网络,这都严重依赖于网页视图 - 我试图把那些下来,但让我不知道他们是不是罪魁祸首我没有删除的库。
有任何想法吗??
Answer 1:
在下面的序列精确使用。
wv.clearCache(true);
wv.clearView();
wv.reload();
wv.loadUrl("about:blank");
wv.loadData(Constants.BLOG_URL);
Answer 2:
我花了近一天左右的工作对使用的web视图的应用程序。 我也有装载数据的几个问题到的WebView。
我不能完全肯定这会工作,但也许将这段代码:
public void reLoadUrl() {
wv.loadUrl(Constants.BLOG_URL);
}
与此代码:
公共无效reLoadUrl(){
wv.clearView();
wv.loadUrl(Constants.BLOG_URL);
}
也许当你清除的WebView它会解决这个问题
Answer 3:
我建议你尝试重新创建WebView
每次使用它,看看是否有什么差别的时间。
首先保存上下文,布局PARMS和家长。
Context context = wb.getContext();
ViewGroup.LayoutParams lp = wv.getLayoutParams();
ViewGroup parent = (ViewGroup)wv.getParent();
然后停止加载并从它的父视图。
wv.stopLoading();
parent.removeView(wv);
然后重新添加回来。
wv = new WebView(context);
parent.addView(wv, lp);
这可能是你需要恢复等性能,但这是一般的想法。
Answer 4:
之前尝试加载一个空白页:
wv.loadUrl("about:blank");
wv.clearHistory();
wv.clearView();
wv.loadUrl(Constants.BLOG_URL);
编辑:这是我,因为我有这个问题太之前所使用的代码,请尝试。
Answer 5:
尝试设置WebChrome客户端。 web视图需要支持WebChrome克林特的在某些情况下正常工作。
wv.setWebChromeClient(new WebChromeClient());
Answer 6:
只是要在其中,你会刷新一个重新初始化整个的WebView和reLoadUrl称之为()的方法。
void loadWebView() {
wv = (WebView) findViewById(R.id.blog_webview);
wv.getSettings().setJavaScriptEnabled(true);
wv.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon {
MyLog.logDump("onPageStarted: " + url);
}
@Override
public void onPageFinished(WebView view, String url) {
MyLog.logDump("onPageFinished: " + url);
}
});
wv.loadUrl(Constants.BLOG_URL);
}
public void reLoadUrl() {
loadWebView();
}
Answer 7:
@override
public void onFormResubmission(WebView view, Message dontResend, Message resend){
resend.sendToTarget();
}
Answer 8:
我有同样的问题,要求resumeTimers()解决了这个问题对我来说...
Answer 9:
我面临着同样的问题,得到它通过以下步骤工作:
webView.clearCache(true);
webView.loadUrl("Url");
和我成功加载了多个网址。
Answer 10:
我正面临同样的问题,终于能够管理解决this.I是新到Android不知道这是好事还是坏事,但它适合我,我只是清楚捕捉从Web视图和破坏并重新加载另一个URL之前重新创建。
mWebView.clearCache(true);
// destroy before reload new url
parentView.removeView(mWebView);
mWebView.clearHistory();
mWebView.destroy();
虽然mWebView.destroy(); 产生错误“的java.lang.Throwable:错误!叫,同时还附WebView.destroy()” 我搜索,但没有得到任何解决方案,很多人说这不会影响应用程序到现在(我仍然不知道解决这个NB:我用WebChromeClient)。
Answer 11:
我面临着同样的问题。 我创建一个新网页视图每次。 创建一个新的人之前只是先摧毁你的web视图以前。 我希望这帮助! 让你的网页流量的全局变量。 喜欢 -
网页流量瓦;
然后创建一个新的WebView之前刚刚摧毁前一
if(null != w)
{
//destroy the previous webview, before creating the new one
w.destroy();
}
w= new WebView(activity);
Answer 12:
在调用这个方法onPause()
private void pauseWebView() {
try {
Class.forName("android.webkit.WebView")
.getMethod("onPause", (Class[]) null)
.invoke(webview, (Object[]) null);
} catch(ClassNotFoundException cnfe) {
} catch(NoSuchMethodException nsme) {
} catch(InvocationTargetException ite) {
} catch (IllegalAccessException iae) {
}
}
Answer 13:
我面临着同样的问题,并没有上述溶液为我工作。 所以我固定它通过使用JavaScript如下重装的WebView:
webView.loadUrl( "javascript:window.location.reload( true )" );
此外JavaScript需要的的WebView启用:
webView.getSettings().setJavaScriptEnabled(true);
Answer 14:
在onCreate
,代替使用wv.loadUrl(Constants.BLOG_URL);
,只需使用wv.loadDataWithBaseURL(baseUrl, readFileAsString("index.html") , mimeType, "UTF-8", null);
文章来源: WebView loadUrl works only once