我正在尝试在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);
}
}
}
答案 0 :(得分:2)
private static Context context;
中的MainActivity
字段永远不会被分配;在Toast.MakeText(context ... )
调用中使用它将导致null异常。通过使用全局上下文来解决此问题:
Toast.MakeText(Android.App.Application.Context, "Loading...", ToastLength.Short).Show();