Xamarin.Forms Android应用程序在webview返回导航后崩溃

Xamarin.Forms Android应用程序在webview返回导航后崩溃,xamarin,xamarin.forms,android-webview,Xamarin,Xamarin.forms,Android Webview,在我的Xamarin.Android应用程序中,我有一个网络视图。在webview中打开网站时,将打开带有“后退”按钮的视图。当我太快单击此后退按钮时,应用程序会崩溃,并显示以下消息。但我不知道如何调试它,因为它只是外部代码,我不知道哪个对象是空的。对于webview,我使用Xam.Plugin.webview NuGet包 System.NullReferenceException: Object reference not set to an instance of an object.

在我的Xamarin.Android应用程序中,我有一个网络视图。在webview中打开网站时,将打开带有“后退”按钮的视图。当我太快单击此后退按钮时,应用程序会崩溃,并显示以下消息。但我不知道如何调试它,因为它只是外部代码,我不知道哪个对象是空的。对于webview,我使用Xam.Plugin.webview NuGet包

System.NullReferenceException: Object reference not set to an instance of an object.
  at Xam.Plugin.WebView.Droid.FormsWebViewClient.OnPageFinished (Android.Webkit.WebView view, System.String url) [0x000b8] in C:\Users\ryan.dixon\Source\Repos\Xam.Plugin.Webview\Xam.Plugin.WebView.Droid\FormsWebViewClient.cs:151
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore+<>c.<ThrowAsync>b__7_0 (System.Object state) [0x00000] in <19853c43ab794d18ab1a33ecb65b3c4d>:0
  at Android.App.SyncContext+<>c__DisplayClass2_0.<Post>b__0 () [0x00000] in /Users/runner/runners/2.159.2/work/1/s/src/Mono.Android/Android.App/SyncContext.cs:35
  at Java.Lang.Thread+RunnableImplementor.Run () [0x00008] in /Users/runner/runners/2.159.2/work/1/s/src/Mono.Android/Java.Lang/Thread.cs:36
  at Java.Lang.IRunnableInvoker.n_Run (System.IntPtr jnienv, System.IntPtr native__this) [0x00009] in /Users/runner/runners/2.159.2/work/1/s/src/Mono.Android/obj/Release/android-27/mcw/Java.Lang.IRunnable.cs:81
  at at (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.24(intptr,intptr)

如果您使用的是Xamarin Forms webview,则必须包括以下内容

在InitializeComponent()之后的视图构造函数中添加以下内容:

yourBackButton.Clicked += OnBackButtonClicked;
yourForwardButton.Clicked += OnForwardButtonClicked;
然后,在构造函数之外添加以下事件方法:

async void OnBackButtonClicked(object sender, EventArgs e)
{
    if (webView.CanGoBack)
    {
        webView.GoBack();
    }
    else
    {
        await Navigation.PopAsync();
    }
}

void OnForwardButtonClicked(object sender, EventArgs e)
{
    if (webView.CanGoForward)
    {
        webView.GoForward();
    }
}
其中webView是webView对象的名称

有关更多信息,请参阅本文:


谢谢。

如果在加载webview时单击此后退按钮过快,是什么意思?是的,正是这样!你能分享更多的代码来重现这个问题吗?什么是后退按钮,导航栏上的默认按钮还是自定义按钮?如果你能和我们分享一份礼物会更好。
async void OnBackButtonClicked(object sender, EventArgs e)
{
    if (webView.CanGoBack)
    {
        webView.GoBack();
    }
    else
    {
        await Navigation.PopAsync();
    }
}

void OnForwardButtonClicked(object sender, EventArgs e)
{
    if (webView.CanGoForward)
    {
        webView.GoForward();
    }
}