xamarin - 无法访问 xamarin forms 项目中的已处置对象异常

标签 xamarin xamarin.forms xamarin.android

我正在开发 Xamarin Forms(表单版本:2.3.4.231)项目。 该应用程序在 iOS 中运行良好,而在 Android 中则随机崩溃。从崩溃日志来看,这似乎是内部崩溃,但我不知道从哪里开始。

我知道应用程序中没有足够的信息。但有人可以帮助我更好地理解这个问题吗?

这是崩溃日志:

    11/07/2017 PM 12:33:13.216: Cannot access a disposed object.
Object name: 'Xamarin.Forms.Platform.Android.FormsTextView'.  at Java.Interop.JniPeerMembers.AssertSelf (Java.Interop.IJavaPeerable self) [0x00030] in <b1a275385773449f855cd147e39ca2c4>:0 
  at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeNonvirtualVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x00001] in <b1a275385773449f855cd147e39ca2c4>:0 
  at Android.Widget.TextView.set_TextFormatted (Java.Lang.ICharSequence value) [0x00028] in <37dcd078418a4ced956136dfaeb51ee2>:0 
  at Android.Widget.TextView.set_Text (System.String value) [0x00013] in <37dcd078418a4ced956136dfaeb51ee2>:0 
  at Xamarin.Forms.Platform.Android.LabelRenderer.UpdateText () [0x00098] in <1481f85a917c4f2b882ea161e9bc082f>:0 
  at Xamarin.Forms.Platform.Android.LabelRenderer.OnElementPropertyChanged (System.Object sender, System.ComponentModel.PropertyChangedEventArgs e) [0x000c5] in <1481f85a917c4f2b882ea161e9bc082f>:0 
  at (wrapper delegate-invoke) <Module>:invoke_void_object_PropertyChangedEventArgs (object,System.ComponentModel.PropertyChangedEventArgs)
  at Xamarin.Forms.BindableObject.OnPropertyChanged (System.String propertyName) [0x00012] in <0f1ce60dbc6b4e24af01294c7acf41c6>:0 
  at Xamarin.Forms.Element.OnPropertyChanged (System.String propertyName) [0x00000] in <0f1ce60dbc6b4e24af01294c7acf41c6>:0 
  at Xamarin.Forms.BindableObject.SetValueActual (Xamarin.Forms.BindableProperty property, Xamarin.Forms.BindableObject+BindablePropertyContext context, System.Object value, System.Boolean currentlyApplying, Xamarin.Forms.BindableObject+SetValueFlags attributes, System.Boolean silent) [0x000fb] in <0f1ce60dbc6b4e24af01294c7acf41c6>:0 
  at Xamarin.Forms.BindableObject.SetValueCore (Xamarin.Forms.BindableProperty property, System.Object value, Xamarin.Forms.BindableObject+SetValueFlags attributes, Xamarin.Forms.BindableObject+SetValuePrivateFlags privateAttributes) [0x0015b] in <0f1ce60dbc6b4e24af01294c7acf41c6>:0 
  at Xamarin.Forms.BindingExpression.ApplyCore (System.Object sourceObject, Xamarin.Forms.BindableObject target, Xamarin.Forms.BindableProperty property, System.Boolean fromTarget) [0x001f9] in <0f1ce60dbc6b4e24af01294c7acf41c6>:0 
  at Xamarin.Forms.BindingExpression.Apply (System.Boolean fromTarget) [0x0003e] in <0f1ce60dbc6b4e24af01294c7acf41c6>:0 
  at Xamarin.Forms.BindingExpression+BindingExpressionPart.<PropertyChanged>b__47_0 () [0x00000] in <0f1ce60dbc6b4e24af01294c7acf41c6>:0 
  at Java.Lang.Thread+RunnableImplementor.Run () [0x0000b] in <37dcd078418a4ced956136dfaeb51ee2>:0 
  at Java.Lang.IRunnableInvoker.n_Run (System.IntPtr jnienv, System.IntPtr native__this) [0x00009] in <37dcd078418a4ced956136dfaeb51ee2>:0 
  at (wrapper dynamic-method) System.Object:0cbcd7f2-854c-44ac-8467-eb8b42716bc1 (intptr,intptr)

最佳答案

这似乎是许多人都遇到的问题( 1234 )。它可能在 2.3.5 中得到修复,因此请尝试安装 2.3.5 XF 库之一,看看问题是否消失。

还有一些答案here这可能对你有用。

  1. 创建一个 Entry 和/或 Label 渲染器,覆盖 OnAttachedToWindowDispose 并捕获异常(exception)。

  2. 尝试将 ListView.CachingStrategy 设置为 RecycleElement

关于xamarin - 无法访问 xamarin forms 项目中的已处置对象异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47223042/

相关文章:

ios - Xamarin ios找不到默认值568 @ 2x

android - Xamarin.Forms (Android) - 签名 APK - 应用程序崩溃版本 5.1 (API 22)

android-intent - Xamarin 上自定义文件扩展名的意图过滤器实现

xaml - Xamarin 形成具有 100% 父容器宽度和自动高度的图像以保持纵横比

android - 不了解 setRetainInstance(或 Xamarin Android 中的 RetainInstance)的工作原理?

android - AppCompat v7 未被正确引用

visual-studio - 如何在 XAML 中的 Xamarin.Forms 中的 Visual Studio 中设置十六进制 BackgroundColor 和整数 FontSize?

c# - StatusBar 和 MasterDetailPage Xamarin.Forms Android 之间出现白条

c# - Xamarin.iOS 应用程序中的 UIApplication 断言失败

android - 当电话是英文时,是否可以根据应用程序的语言环境支持 rtl 文本方向?