有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java(安卓 studio)无法更改webview中的“网页不可用”页面

我正在尝试在我的应用程序中显示我自己的“无互联网”页面。 我认为我的代码可能有问题,我一直在遵循this教程,但出于某种原因,我的代码一直显示默认的“网页不可用”屏幕

public class MainActivity extends AppCompatActivity {

    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webView = (WebView) findViewById(R.id.webview);
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setAppCacheEnabled(true);
        webView.loadUrl("https://www.kasumushi.com/");

        webView.setWebViewClient(new WebViewClient() {
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                webView.loadUrl("file:///安卓_asset/error.html");

            }
        });
    }

    @Override
    public void onBackPressed() {
        if(webView.canGoBack()) {
            webView.goBack();
        }else {
            super.onBackPressed();
        }
    }

}

共 (2) 个答案

  1. # 1 楼答案

    boolean errorOccurred = false; // Global variable
    
    webView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            hideError();
            showProgress();
            Toast.makeText(Test.this, "start loading", Toast.LENGTH_SHORT).show();
            errorOccurred=false;
        }
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            if (!errorOccurred) {
                hideError();
            }
            hideProgress();
            Toast.makeText(Test.this, "Web view was loaded", Toast.LENGTH_SHORT).show();
        }
        @Override
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            errorOccurred = true;
            hideProgress();
            showError();
            Toast.makeText(Test.this, "Could not load your page", Toast.LENGTH_SHORT).show();
            super.onReceivedError(view, errorCode, description, failingUrl);
            Toast.makeText(Test.this, "error", Toast.LENGTH_SHORT).show();
        }
    });
    
  2. # 2 楼答案

    请检查以下程序并尝试重新测试您的问题

                    @Override
                    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                        Toast.makeText(MainActivity.this, "Error! " + description, Toast.LENGTH_SHORT).show();
                        //Clear WebView
                        try {
                            view.stopLoading();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        try {
                            view.clearView();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        if (view.canGoBack()) {
                            view.goBack();
                        }
                        String ErrorPagePath = "file:///android_asset/htmls/error.html";
                        view.loadUrl(ErrorPagePath);
    
                        super.onReceivedError(view, errorCode, description, failingUrl);
                    }
                });