有没有更好的方法来刷新WebView?

好。 我已经到处看着,我的小脑子不能理解一个更好的方式来刷新一个活动。 任何我能理解的build议都会很棒。 🙂

这里是java代码:

package com.dge.dges; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.webkit.WebView; import android.widget.Button; public class dgeActivity extends Activity { WebView mWebView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mWebView = (WebView) findViewById(R.id.webview); mWebView.getSettings(); mWebView.loadUrl("http://www.websitehere.php"); Button newButton = (Button)findViewById(R.id.new_button); newButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Intent intent = new Intent(dgeActivity.this, dgeActivity.class); startActivity(intent); } }); } } 

这里是main.xml

  <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/RelativeLayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#000000" > <WebView android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:scrollbars="none" /> <Button android:id="@+id/new_button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:text="Refresh" /> </RelativeLayout> 

我不喜欢活动之后重新堆叠活动的想法。 必须有一个更简单的方法来刷新网页视图。 请帮忙。 🙂

1)如果你想重新加载相同的URL:

 mWebView.loadUrl("http://www.websitehere.php"); 

所以完整的代码将是

 newButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { dgeActivity.this.mWebView.loadUrl("http://www.websitehere.php"); }}); 

2)您也可以调用mWebView.reload()但请注意,如果请求是POST,则会重新发送页面,因此只有在GET时才能正常工作。

你可以调用一个mWebView.reload(); 这就是它所做的

最好的解决办法就是做webView.loadUrl( "javascript:window.location.reload( true )" ); 。 这应该适用于所有版本,不会引入新的历史logging条目。

这对我有效。

只需放在onCreate模式下

 Button button = (Button) findViewById(R.id.reload_btn); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { web.loadUrl( "javascript:window.location.reload( true )" ); } }); 

这是可以在webView中重新加载网站的代码

 web.loadUrl( "javascript:window.location.reload( true )" ); 

刷新当前的webview的URL不是一个常用的用法。
我在这种情况下使用这个:当用户转到另一个活动,用户回到webview的活动,我重新加载当前的URL,像这样:

 public class MyWebviewActivity extends Activity { WebView mWebView; .... .... .... @Override public void onRestart() { String url = mWebView.getUrl(); String postData = MyUtility.getOptionsDataForPOSTURL(mContext); mWebView.postUrl(url, EncodingUtils.getBytes(postData, "BASE64")); } } 

您也可以使用WebView的reload()函数。 但是请注意,如果您使用postUrl()加载webview,那么mWebView.reload(); 不起作用。 这也适用

 String webUrl = webView.getUrl(); mWebView.loadUrl(webUrl); 

尝试这个 :

 mWebView.loadUrl(mWebView.getUrl().toString()); 

是的,由于某种原因WebView.reload()导致崩溃,如果它之前加载失败(与处理历史的方式有关)。 这是我用来刷新我的web视图的代码。 我将当前的url存储在self.url

 # 1: Pause timeout and page loading self.timeout.pause() sleep(1) # 2: Check for internet connection (Really lazy way) while self.page().networkAccessManager().networkAccessible() == QNetworkAccessManager.NotAccessible: sleep(2) # 3:Try again if self.url == self.page().mainFrame().url(): self.page().action(QWebPage.Reload) self.timeout.resume(60) else: self.page().action(QWebPage.Stop) self.page().mainFrame().load(self.url) self.timeout.resume(30) return False 

为什么不试试这个?

Swift代码里面调用类:

 self.mainFrame.reload() 

或外部呼叫

 myWebV.mainFrame.reload()