确定。我一直在寻找,而我的小脑子却无法理解更新活动的更好方法。我能理解的任何建议都会很棒。 :)
这是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>
我不喜欢在活动后重新堆叠活动的想法。必须有一种更简单的方法来刷新webview。请帮忙。 :)
答案 0 :(得分:79)
你可以拨打mWebView.reload();
这就是它的作用
答案 1 :(得分:56)
1)如果您想重新加载相同的网址:
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上正常使用。
答案 2 :(得分:42)
最好的解决方案就是webView.loadUrl( "javascript:window.location.reload( true )" );
。这应该适用于所有版本,并不会引入新的历史记录条目。
答案 3 :(得分:11)
这对我有用。
刚刚放入onCreate metode
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 )" );
答案 4 :(得分:4)
试试这个:
mWebView.loadUrl(mWebView.getUrl().toString());
答案 5 :(得分:3)
刷新当前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()
加载了网页视图,则mWebView.reload();
无效。这也有效
String webUrl = webView.getUrl();
mWebView.loadUrl(webUrl);
答案 6 :(得分:0)
在onFormResubmission
中覆盖WebViewClient
@Override
public void onFormResubmission(WebView view, Message dontResend, Message resend){
resend.sendToTarget();
}
答案 7 :(得分:-4)
是的由于某种原因,如果WebView.reload()之前加载失败(与处理历史记录的方式有关),则会导致崩溃。这是我用来刷新webview的代码。我将当前网址存储在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
答案 8 :(得分:-4)
为什么不尝试这个?
要在类内部调用的Swift代码:
self.mainFrame.reload()
或外部电话
myWebV.mainFrame.reload()