55

好的。我到处都看过,我的小脑袋就是无法理解刷新活动的更好方法。任何我能理解的建议都会很棒。:)

这是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>

我不喜欢在活动后重新堆叠活动的想法。必须有一种更简单的方法来刷新 web 视图。请帮忙。:)

4

9 回答 9

91

你可以打电话给mWebView.reload();这就是它的作用

于 2010-04-03T23:29:30.680 回答
65

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 一起正常工作。

于 2010-04-01T20:33:09.403 回答
48

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

于 2011-08-07T06:18:29.260 回答
11

这对我有用。

只需放在 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 )" );  
于 2013-02-07T10:31:09.183 回答
5

尝试这个 :

mWebView.loadUrl(mWebView.getUrl().toString());
于 2014-08-16T00:54:10.770 回答
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()功能。但请注意,如果您使用 加载 webview postUrl(),则mWebView.reload();不起作用。这也有效

String webUrl = webView.getUrl();
mWebView.loadUrl(webUrl);
于 2013-11-08T18:50:27.120 回答
1

覆盖onFormResubmission_WebViewClient

@Override
public void onFormResubmission(WebView view, Message dontResend, Message resend){
   resend.sendToTarget();
}
于 2020-01-29T08:15:12.930 回答
-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
于 2013-09-16T08:49:38.097 回答
-7

为什么不试试这个?

在类内部调用的 Swift 代码:

self.mainFrame.reload()

或外呼

myWebV.mainFrame.reload()
于 2014-12-09T22:05:50.910 回答