有没有更好的方法来刷新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()