Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法访问xamarin forms项目中已处理的对象异常_Xamarin_Xamarin.forms_Xamarin.android - Fatal编程技术网

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

无法访问xamarin forms项目中已处理的对象异常,xamarin,xamarin.forms,xamarin.android,Xamarin,Xamarin.forms,Xamarin.android,我正在从事Xamarin表单(表单版本: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.Fo

我正在从事Xamarin表单(表单版本: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)
2017年7月11日下午12:33:13.216:无法访问已处置的对象。
对象名称:“Xamarin.Forms.Platform.Android.FormsTextView”。位于:0中的Java.Interop.jnipermembers.AssertSelf(Java.Interop.IJavaPeerable self)[0x00030]
在Java.Interop.jnipermembers+JniInstanceMethods.InvokeNonvirtualVoidMethod(System.String encodedMember,Java.Interop.IJavaPeerable self,Java.Interop.JniArgumentValue*参数)[0x00001]中:0
在Android.Widget.TextView.set_TextFormatted(Java.Lang.ICharSequence值)[0x00028]中:0
在Android.Widget.TextView.set_Text(System.String值)[0x00013]中:0
位于:0中的Xamarin.Forms.Platform.Android.LabelRenderer.UpdateText()[0x00098]
位于Xamarin.Forms.Platform.Android.LabelRenderer.OnElementPropertyChanged(System.Object sender,System.ComponentModel.PropertyChangedEventArgs e)[0x000c5]中:0
at(包装器委托调用):调用\u void\u object\u PropertyChangedEventArgs(对象,System.ComponentModel.PropertyChangedEventArgs)
在0中的Xamarin.Forms.BindableObject.OnPropertyChanged(System.String propertyName)[0x00012]处
在:0中的Xamarin.Forms.Element.OnPropertyChanged(System.String propertyName)[0x00000]处
在Xamarin.Forms.BindableObject.SetValueActual(Xamarin.Forms.BindableProperty属性,Xamarin.Forms.BindableObject+BindableProperty上下文,System.Object值,System.Boolean当前应用,Xamarin.Forms.BindableObject+SetValueFlags属性,System.Boolean静默)[0x000fb]中:0
在Xamarin.Forms.BindableObject.SetValueCore(Xamarin.Forms.BindableProperty属性,System.Object值,Xamarin.Forms.BindableObject+SetValueFlags属性,Xamarin.Forms.BindableObject+SetValuePrivateFlags privateAttributes)[0x0015b]中:0
在Xamarin.Forms.BindingExpression.ApplyCore(System.Object sourceObject,Xamarin.Forms.BindableObject目标,Xamarin.Forms.BindableProperty属性,System.Boolean fromTarget)[0x001f9]中:0
在:0中的Xamarin.Forms.BindingExpression.Apply(System.Boolean fromTarget)[0x0003e]处
在Xamarin.Forms.BindingExpression+BindingExpressionPart.b_uu47_0()[0x00000]中:0
在0中的Java.Lang.Thread+runnableMplementor.Run()[0x0000b]处
在Java.Lang.IRunnableInvoker.n_运行时(System.IntPtr jnienv,System.IntPtr native__this)[0x00009]in:0
at(包装器动态方法)系统。对象:0cbcd7f2-854c-44ac-8467-eb8b42716bc1(intptr,intptr)

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

还有一些答案可能对你有用

  • 创建一个
    条目
    和/或
    标签
    呈现程序,覆盖
    OnAttachedToWindow
    Dispose
    并捕获异常

  • 尝试将
    ListView.CachingStrategy
    设置为
    RecycleElement


  • 不幸的是,我们在Xamarin.Forms 3.6.X上遇到了这个错误。这可能在4.X中得到修复,我不知道,但在此期间,我们能够通过创建自己的LabelRenderer来解决它,正如@hvaughan3所建议的那样

    要保存一些键入,请参见以下内容:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Linq;
    using System.Text;
    using Android.App;
    using Android.Content;
    using Android.OS;
    using Android.Runtime;
    using Android.Views;
    using Android.Widget;
    using Xamarin.Forms;
    using Xamarin.Forms.Platform.Android;
    
    [assembly: ExportRenderer(typeof(Label), typeof(Your.Namespace.Renderers.YourLabelRenderer))]
    namespace Your.Namespace.Renderers
    {
        public class YourLabelRenderer : LabelRenderer
        {
            public YourLabelRenderer(Android.Content.Context context) : base(context) { }
            protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
            {
                try
                {
                    base.OnElementPropertyChanged(sender, e);
                }
                catch (System.ObjectDisposedException)
                {
                    //This is addressing a crash in Xamarin forums 3.6 
                }
            }
        }
    }
    

    您是否有一些发生此异常的相关代码?对不起,我没有太多信息。我不确定这次车祸发生在哪里。我甚至尝试设置异常断点。但是这个应用程序并没有停下来。但是,它试图显示的页面的代码/XAML是什么?该页面中包含哪些代码?
    FormsTextView
    出现问题,您是否有任何自定义渲染器?我们需要比您现在提供的更多的信息才能说任何有用的话。您好,我今天早上更新了一个表单应用程序,我有同样的问题,当页面中有条目时(我还没有更多信息)ListView.CachingStrategy to RecycleElement对我有效!