【问题标题】:NullPointerException when using effects with Xamarin使用 Xamarin 效果时出现 NullPointerException
【发布时间】:2017-09-07 22:15:52
【问题描述】:

我决定为Label 添加下划线Effect,并从here 逐步完成,但由于某种原因,每当我有Label 和这个Effect 时,我的应用程序在Android 和iOS 上都会崩溃.使用诊断日志,仍然没有消息,这可以告诉我问题出在哪里。实际上,它只是开始用这个Label 渲染我的View,然后我的应用程序变得不活跃,手机打开它的主屏幕,在VS 中,调试立即停止。在 Android 设备日志中,我发现了这一点:

在 iOS 设备日志中:

代码类似于上面链接中的代码。 我已经试图找到一些原因,实际上,我没有。我试图硬核名称。此外,没有达到类或平台特定类中的任何断点。例如,如果我评论 ResolutionGroupName 属性,应用程序将运行,Label 将显示,但肯定没有下划线。

更新

抱歉,可能出现错误的 iOS 屏幕截图与当前问题无关。但我有一个可能是:

【问题讨论】:

  • 请添加您的代码,这样对您有帮助。
  • 什么是点?阅读问题将更加困难。我没有添加一些特定的代码。我只添加了上面链接中的代码。
  • 在效果中放入一些断点,我在OnElementPropertyChanged方法中看到了一些类似args.PropertyName == Label.TextProperty.PropertyName的行。确保 args 不是 null
  • @GeraldVersluis 在我的情况下,断点永远不会到达特定于平台的代码,因此它没有意义。已经有答案了。
  • 如果有人遇到与我在 iOS 日志的第一个屏幕截图中相同的错误,请尝试清除并重建解决方案。

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


【解决方案1】:

如果您使用博客中的相同代码,请确保正确编写平台特定效果定义。

安卓中的前:

[assembly: ResolutionGroupName(NameSpace.SharedEffectName.EffectNamespace)]
[assembly: ExportEffect(typeof(NameSpace.Droid.UnderlineEffect), nameof(Namespace.UnderlineEffect))] 

这应该可以修复错误。

【讨论】:

  • 谢谢。问题是,ExportEffect 中应该是什么类型没有明确的规定。我使用 PCL UnderlineEffect 而不是特定于平台。而且我之前其实也试过这个,但是还有其他问题,所以没注意这个。
  • 因此,如果 对发布您的代码有用并且存在 不同.. ;)
  • 澄清一下,如果其他人有这个问题并且不确定上面的代码有什么不同,请注意提供给 ExportEffect命名空间 - 这是为了确保引用的类是特定于平台的类(例如在iOSDroid 命名空间中)而不是表单/基类。
猜你喜欢
  • 2013-12-29
  • 2013-12-19
  • 2022-01-19
  • 2013-04-13
  • 2014-11-11
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多