【问题标题】:Xamarin forms Xfx.Controls Exception when page closes页面关闭时 Xamarin 形成 Xfx.Controls 异常
【发布时间】:2019-08-31 10:19:15
【问题描述】:

我在我的 xamarin 表单应用程序中使用 Xfx.Controls 来输入浮动标签。 它在android上运行良好,

但是在iOS上运行时在浮点输入上填充文本并关闭页面后会抛出异常。

System.NullReferenceException:对象引用未设置为实例 一个物体在 Xfx.Controls.iOS.Renderers.XfxEntryRendererTouch.OnElementChanged

如何解决这个问题?

【问题讨论】:

标签: xamarin xamarin.forms xamarin.ios custom-renderer


【解决方案1】:

这是插件内部的问题,因此您可以熟悉插件代码并自己修复错误,然后将问题提交到他们的 github 并等待最终修复。

【讨论】:

    【解决方案2】:

    根据an open issue:中的评论

    这是因为在 xamarin 4 Dispose 被正确调用 在渲染器上(想知道为什么它在以前的版本中没有)...... 进入 OnElementChanged 时控件为空,因此取消订阅 失败。所以 onelementchanged 应该检查 if Control != null where 适用

    所以一个临时的解决方法是使用这样的自定义渲染器:

    public class CustomXfxEntryRendererTouch : XfxEntryRendererTouch
        {
            protected override void Dispose(bool disposing)
            {
                if (disposing)
                {
                    SetElement(null); //trigger elementchange before base dispose happens https://github.com/XamFormsExtended/Xfx.Controls/issues/97
                }
    
                base.Dispose(disposing);
            }
        }
    

    【讨论】:

      【解决方案3】:

      确保添加 ExportRenderer。我是 xamarin 和 C# 的新手,所以我认为这会帮助那些仍在学习的人。页面 (XfxEntry) 和您的自定义渲染器 (CustomXfxEntryRendererTouch) 中使用的 Feed 控件。

      [assembly: ExportRenderer(typeof(XfxEntry), typeof(CustomXfxEntryRendererTouch))]
      namespace Application.iOS.CustomRenderer
      {
          public class CustomXfxEntryRendererTouch : XfxEntryRendererTouch
          {
              protected override void Dispose(bool disposing)
              {
                  if (disposing)
                  {
                      SetElement(null); //trigger elementchange before base dispose happens https://github.com/XamFormsExtended/Xfx.Controls/issues/97
                  }
      
                  base.Dispose(disposing);
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2014-10-10
        • 1970-01-01
        • 1970-01-01
        • 2019-04-02
        • 2018-11-20
        • 1970-01-01
        • 2012-11-04
        • 2022-11-21
        • 1970-01-01
        相关资源
        最近更新 更多