【问题标题】:Add custom android webview error page添加自定义 android webview 错误页面
【发布时间】:2015-11-16 04:29:15
【问题描述】:

在我的应用中,我想要一个错误活动“不是错误的 HTML 页面”。其中包含刷新按钮和布局。我已经搜索了它,但我发现它只是资产文件夹中的一个自定义 html 错误页面。

我在下面创建了一些代码, 我想要的是,当发生网络错误时,它会打开这样的活动,用户可以使用按钮轻松刷新页面。

我想做这样的错误页面..

这不是一个 html 错误页面。这包含带有刷新按钮的布局,

public WebView mWebview ;
@Override
protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.map);
    mWebview  = new WebView(this);
    mWebview.getSettings().setJavaScriptEnabled(true); // enable javascript

    mWebview.setWebViewClient(new WebViewClient() {
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {


            // Do Something Here,  I don't know what to do.. :(


        }
    });

    mWebview.loadUrl("google.com");
    setContentView(mWebview);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.option, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle presses on the action bar items
    switch (item.getItemId()) {

        case R.id.refresh:
            startActivity(new Intent(this, CeS1.class));
            finish();
            return true;

        case R.id.about:
            startActivity(new Intent(this, Credits_activity.class));
            finish();
            return true;

        case R.id.gotomain:
            startActivity(new Intent(this, MenuActivity.class));
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

【问题讨论】:

  • 实现代码中显示的 onReceivedError() 方法以实现类似 startActivity(new Intent(this, error_activity.class)) 的内容,您甚至可以在启动 error_activity 时发送错误信息。跨度>
  • 能详细解释一下吗?

标签: android android-activity webview android-webview custom-error-pages


【解决方案1】:

在你的代码中调用它

 webview.setWebViewClient(new WebViewClient() {
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
 //place you error code here
   }
});

【讨论】:

【解决方案2】:

您可以创建具有 2 层的布局。一个是WebView,另一个是你的错误布局。当您的WebView 遇到网络错误时,您可以隐藏您的WebView 并显示带有重试按钮的errorView。

【讨论】:

    【解决方案3】:

    首先,您将 HTML 错误页面放在资产文件夹中,然后 您需要根据以下代码覆盖 onReceivedError,

    private class MyWebViewClient extends WebViewClient {
    .
    .
    .
    
       // api<23
       @Override
       public void onReceivedError(WebView view, int errorCode, String description, String url) {
            view.stopLoading();
            webview.loadUrl("file:///android_asset/error/error.html");
        }
    
      // api> 23
      @Override
      @TargetApi(android.os.Build.VERSION_CODES.M) 
      public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
        view.stopLoading();
        webview.loadUrl("file:///android_asset/error/error.html");
    //          super.onReceivedError(view, request, error);
      }
    .
    .
    .
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      • 2018-12-27
      • 2019-11-28
      相关资源
      最近更新 更多