xamarin - 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();
}
解决方案
如果您使用的是 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
谢谢你。
推荐阅读
- ruby-on-rails - 用于 REST API 的 Rails 控制器
- ruby-on-rails - NoMethodError:Psych:Module (I18n::InvalidLocaleData) 的未定义方法“unsafe_load”
- haskell - 有没有简单的方法可以用单子类型扩展简单类型的 lambda 演算?
- python - python pil 模块名称 pronlems
- tensorflow - Keras 中的自定义优化器实现
- powershell - 直接在计算机上更改活动目录没有活动目录的用户密码
- laravel-5 - Laravel 每日日志文件何时以及如何被删除?
- matlab - 如何逐步在批处理文件中运行for循环
- python - 当列子集中的所有列都满足条件时,Pandas 会丢弃行
- java - 在带有 Hibernates @Formula 注释的查询中使用实体的值