mvvmcross Android.Невозможно получить доступ к удаленному объекту при включенной привязке - PullRequest
0 голосов
/ 03 июля 2019

После повторного посещения экрана я получаю следующую ошибку:

System.ObjectDisposedException: Невозможно получить доступ к удаленному объекту. в Java.Interop.JniPeerMembers.AssertSelf (Java.Interop.IJavaPeerable self) [0x00029] в <286213b9e14c442ba8d8d94cc9dbec8e>: 0 07-03 11: 29: 51.230 I / MonoDroid (20631): в Java.Interop.JniPeerMembers + JniInstanceMethods.InvokeVirtualVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue * параметры) [0x00000] в <286213b9e14c442ba8d8d94cc9dbec8e>: 0 07-03 11: 29: 51.230 I / MonoDroid (20631): на Android.Views.View.set_Enabled (System.Boolean value) [0x00022] в : 0 07-03 11: 29: 51.230 I / MonoDroid (20631): в MvvmCross.Platforms.Android.Binding.Target.MvxViewClickBinding.RefreshEnabledState () [0x00022] в C: \ Проекты \ mvvmcross \ MvvmCross \ Platforms \ Android \ Binding \ Target \ MvxViewClickBinding.cs: 64 07-03 11: 29: 51.230 I / MonoDroid (20631): в MvvmCross.Platforms.Android.Binding.Target.MvxViewClickBinding.OnCanExecuteChanged (Отправитель System.Object, System.EventArgs e) [0x00000] в C: \ Проекты \ mvvmcross \ MvvmCross \ Platforms \ Android \ Binding \ Target \ MvxViewClickBinding.cs: 69 07-03 11: 29: 51.230 I / MonoDroid (20631): в (оболочка удалось к родной) System.Reflection.MonoMethod.InternalInvoke (System.Reflection.MonoMethod, объект, объект [], System.Exception &) 07-03 11: 29: 51.230 I / MonoDroid (20631): в System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder связыватель, параметры System.Object [], System.Globalization.CultureInfo культура) [0x0003b] в: 0 07-03 11: 29: 51.230 I / MonoDroid (20631): --- Конец стека внутренних исключений трассировка --- 07-03 11: 29: 51.230 I / MonoDroid (20631): в System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder связыватель, параметры System.Object [], System.Globalization.CultureInfo культура) [0x00054] в: 0 07-03 11: 29: 51.230 I / MonoDroid (20631): в System.Reflection.MethodBase.Invoke (System.Object obj, Параметры System.Object []) [0x00000] в : 0 07-03 11: 29: 51.230 I / MonoDroid (20631): в MvvmCross.WeakSubscription.MvxWeakEventSubscription`2 [TSource, TEventArgs] .OnSourceEvent (Отправитель System.Object, TEventArgs e) [0x0000a] в C: \ Проекты \ mvvmcross \ MvvmCross \ WeakSubscription \ MvxWeakEventSubscription.cs: 74 07-03 11: 29: 51.230 I / MonoDroid (20631): в MvvmCross.Commands.MvxWeakCommandHelper.RaiseCanExecuteChanged (Отправитель System.Object) [0x00014] в C: \ projects \ mvvmcross \ MvvmCross \ Commands \ MvxCommand.cs: 96 07-03 11: 29: 51.230 I / MonoDroid (20631): в MvvmCross.Commands.MvxCommandBase.b__9_0 () [0x00000] в C: \ Проекты \ mvvmcross \ MvvmCross \ Команды \ MvxCommand.cs: 135

Не уверен, если этот андроид или mvvmcross проблема. Можно ли избежать вызова представления в MvxViewClickBinding, если оно удалено?

1 Ответ

0 голосов
/ 03 июля 2019

Полагаю, вы могли бы написать метод статического расширения для Java.Lang.Object, как показано ниже:

public static class ObjectExtensions
{
    public static bool IsDisposedOrNull(this Object objectValue)
    {
        return objectValue?.Handle == IntPtr.Zero;
    }
}
...