【问题标题】:Xamarin Webview ' Webpage not available ' error, how to show custom error messageXamarin Webview'网页不可用'错误,如何显示自定义错误消息
【发布时间】:2017-07-29 11:26:15
【问题描述】:

这是活动代码。

namespace LoadWebPage {
    [Activity(Label = "LoadWebPage", MainLauncher = true, Icon = "@drawable/icon", Theme = "@android:style/Theme.NoTitleBar")]
    public class Activity1 : Activity {
        protected override void OnCreate (Bundle bundle)
        {
            base.OnCreate (bundle);

            // Set our view from the "main" layout resource
            SetContentView (Resource.Layout.Main);

            // Get our webview and load the local file in for display
            WebView webView = FindViewById<WebView>(Resource.Id.LocalWebView);
            webView.SetWebViewClient (new WebViewClient ());
            webView.LoadUrl("http://www.xamarin.com");

            // Some websites will require Javascript to be enabled
            webView.Settings.JavaScriptEnabled = true;
            //webView.LoadUrl("http://youtube.com");

            // allow zooming/panning            
            webView.Settings.BuiltInZoomControls = true;
            webView.Settings.SetSupportZoom(true);

            // scrollbar stuff            
            webView.ScrollBarStyle = ScrollbarStyles.OutsideOverlay; 
            // so there's no 'white line'            
            webView.ScrollbarFadingEnabled = false;
        }
    }
}

【问题讨论】:

    标签: xamarin webview error-handling xamarin.android


    【解决方案1】:

    子类WebViewClient 并实现OnReceivedError 方法,然后创建WebViewClient 子类的实例并通过WebView.SetWebViewClient 方法分配它。

    当您收到错误时,发布原生 AlertDialog、自定义弹出窗口或将 WebView 重定向到自定义错误页面等...

    WebViewClient 子视图:

    public class Client : WebViewClient
    {
        public override void OnReceivedError(WebView view, ClientError errorCode, string description, string failingUrl)
        {
            DisplayError(view, description);
        }
    
        // API 21+
        public override void OnReceivedError(WebView view, IWebResourceRequest request, WebResourceError error)
        {
            DisplayError(view, error.Description);
        }
    
        void DisplayError(WebView view, string description)
        {
            Toast.MakeText(view.Context, description, ToastLength.Long).Show();
            view.LoadUrl("https://stackoverflow.com");
        }
    }
    

    用法:

    webView.SetWebViewClient(new Client());
    

    【讨论】:

    • 感谢支持,还是解决不了,这是我的解决方案gitlab.com/arun22.chief/LoadWebPage.git可以看看吗,请
    • @EdathadanChiefakaArun 错误页面中显示的net:: 错误是什么?
    • 如果我在网络关闭的情况下启动应用程序,我会得到一个空白的 webview。如果我在打开网络的情况下加载第一页,然后关闭网络,链接不起作用,没有显示错误消息。
    • @EdathadanChiefakaArun 您现在正在描述一个不同的问题,使用BroadcastReceiver 并将其注册到IntentFilter (ConnectivityManager.ConnectivityAction) 以监控网络连接并在连接更改时采取相应措施... .
    • @EdathadanChiefakaArun 使用 BroadcastReceiver 并注册到 IntentFilter (ConnectivityManager.ConnectivityAction) 以监控网络连接,当您断开连接时,禁用 WebView 并显示需要网络连接的AlertDialog通过您的应用继续。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多