首页 > 解决方案 > Xamarin.Forms Android 应用程序在 web 视图返回导航后崩溃

问题描述

在我的 Xamarin.Android 应用程序中,我有一个 webview。在 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)

网络视图

public void PerformBack()
{
    GoBack();
}

标签: xamarinxamarin.formsandroid-webview

解决方案


如果您使用的是 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 对象的名称。

更多信息请参考这篇文章:https ://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/webview?tabs=windows

谢谢你。


推荐阅读