安卓:重新加载Webview

3
我想使用 window.loadUrl("Javascript:window.location.reload( true )"); 来重新加载一个webview,但是无法执行。请问我能得到一些建议或替代方案吗?我只是想让按钮 reload 重新加载webview window

谢谢, 以下是Java代码:

   package com.fortunecaster.android;

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.webkit.WebChromeClient;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    import android.widget.Button;

    public class FcastActivity extends Activity { 

    WebView window;
    Button reload;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fcast);

        window = (WebView)findViewById(R.id.webView1);
        window.getSettings().setJavaScriptEnabled(true);
        window.getSettings().setLoadWithOverviewMode(true);
        window.getSettings().setUseWideViewPort(true);
        window.setWebViewClient(new WebViewClient());
        window.setWebChromeClient(new WebChromeClient());
        window.getSettings().setAppCacheEnabled(true);


        try {
        window.loadUrl("http://www.fortunecaster.com/android-td");
        } catch (Exception e) {
            e.printStackTrace();

            //setup button
            reload = (Button)findViewById(R.id.button1);
            //set onClickListener
            reload.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    window.loadUrl("Javascript:window.location.reload( true )");

                    // TODO Auto-generated method stub

                }
            });
      }
}

尝试在 javascript 中使用小写字母 j - CommonsWare
谢谢。你是正确的。那行代码中j应该是小写字母。不幸的是,按钮仍然无法重新加载。 - user2544501
4个回答

7

只需使用此 reload() 方法,如下所示:

webview.reload();

3

1
我猜这取决于缓存模式,但请继续阅读我发布的链接。 :) - Langusten Gustel
Jan1337z,您提供的链接是我最初了解此重新加载方法的地方。 - user2544501
Jan1337z- 不过,根据文章,我已经调整了重新加载的方法:@Override public void onClick(View v) { CastActivity.this.window.loadUrl("http://www.fortunecaster.com/android-td");我还注意到我的Java代码中对“Button”的引用应该改为“ImageButton”,所以我也进行了更改。但是我仍然无法让按钮重新加载Web视图。它只是点击而没有反应。 - user2544501
1
Jan1337z-谢谢。我很感激你的提议,但在对代码进行一些排除过程后,我发现问题出在我在loadURL中设置的异常上。一旦我删除了异常,所有的重新加载方法都可以正常工作。我选择使用window.loadUrl("javascript:window.location.reload(true)"),因为我的webview内容具有随机图像加载,而这种方法可以实现真正的webview重新加载,没有缓存问题。 - user2544501
1
只需尝试mWebView.reload(); !! - molu2008
显示剩余3条评论

1

创建一个函数来调用webView,并重复使用它。

此外,在编码的最前面使用webView.reload(); 来刷新(使其为空)webView页面。

protected void setWebView(){
   window = (WebView)findViewById(R.id.webView1);
   window.reload(); // this make empty window, 
                    // so if you call setWebView() again, 
                    // you might rebuild new webview from here.
   window.getSettings().setJavaScriptEnabled(true);
   window.getSettings().setLoadWithOverviewMode(true);
   window.getSettings().setUseWideViewPort(true);
   window.setWebViewClient(new WebViewClient());
   window.setWebChromeClient(new WebChromeClient());
   window.getSettings().setAppCacheEnabled(true);
   window.loadUrl("http://www.fortunecaster.com/android-td");
}

1
@Override
            public void onClick(View v) {
                window.loadUrl(window.GetUrl());

                // TODO Auto-generated method stub

            }
        });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接