Android C#WebView OnPageStart Toast

时间:2015-09-18 20:18:59

标签: c# android webview xamarin

我正在尝试在WebView启动时完成某种操作,例如加载旋转轮或Toast消息......

我做的事情使应用程序崩溃了。 (我是C#的新手,所以很简单的答案很感激。)

public class MainActivity : Activity
    {
        private static Context context;

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);



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

            WebView mWebView = FindViewById<WebView>(Resource.Id.webView);
            mWebView.Settings.JavaScriptEnabled = true;

            mWebView.SetWebViewClient(new MyWebViewClient());

            //Load url to be randered on WebView
            mWebView.LoadUrl("https://google.com");


    }


        public class MyWebViewClient : WebViewClient
        {
            public override bool ShouldOverrideUrlLoading(WebView view, string url)
            {
                view.LoadUrl(url);
                return true;
            }

            public override void OnPageStarted(WebView view, string url, Android.Graphics.Bitmap favicon)
            {
                base.OnPageStarted(view, url, favicon);
                Toast.MakeText(context, "Loading...", ToastLength.Short).Show();
            }

            public override void OnPageFinished(WebView view, string url)
            {
                base.OnPageFinished(view, url);
            }

            public override void OnReceivedError(WebView view, ClientError errorCode, string description, string failingUrl)
            {
                base.OnReceivedError(view, errorCode, description, failingUrl);
            }
        }
    }

1 个答案:

答案 0 :(得分:2)

private static Context context;中的MainActivity字段永远不会被分配;在Toast.MakeText(context ... )调用中使用它将导致null异常。通过使用全局上下文来解决此问题:

Toast.MakeText(Android.App.Application.Context, "Loading...", ToastLength.Short).Show();