使用Xamarin Forms Visual Studio 2019。
我需要获取设备的DPI。
此帖子有一个解决方案: How to get DPI device to PCL in Xamarin. Forms?
实施解决方案带来了问题:
应用上面的答案时,我收到此错误消息:
找不到类型或名称空间名称'DependencyAttribute' (您是否缺少using指令或程序集引用?)
在您的android实现中,添加一个新类:
[assembly: Dependency(typeof(DisplayInfo))]
namespace .....
-我通过替换为解决了该编译器问题:
使用Xamarin.Essentials
;
[assembly: Xamarin.Forms.Dependency(typeof(DisplayInfo))]
但是,当我编译并运行代码时,当我尝试在Xamarin Core代码中使用它时,它就会崩溃:
int dpi = DependencyService.Get<IDisplayInfo>().GetDisplayDpi();
我在上一行收到此运行时错误:
System.NullReferenceException:对象引用未设置为实例 一个对象
有什么想法吗?我会将这个问题添加为对原始问题的评论,但是作为新用户,他们没有做这些事情的要点...如果有人可以对原始问题的解决方案发表评论,将其指向该URL,那也会有所帮助
答案 0 :(得分:-1)
所以我自己的问题的答案:
最初提供的解决方案说做到这一点:
在您的android实现中,添加一个新类:
[assembly: Dependency(typeof(DisplayInfo))]
namespace YourAppNamespace.Droid
{
public class DisplayInfo : IDisplayInfo
{
public int GetDisplayWidth()
{
(int)Android.App.Application.Context.Resources.DisplayMetrics.WidthPixels;
}
public int GetDisplayHeight()
{
(int)Android.App.Application.Context.Resources.DisplayMetrics.HeightPixels;
}
public int GetDisplayDpi()
{
(int)Android.App.Application.Context.Resources.DisplayMetrics.DensityDpi;
}
}
}
我在初始化此类的Android代码中没有看到任何问题,我不确定如何最好地做到这一点。
因此,我遵循了直接在Android MainActivity.cs文件中实现该界面的指导,并且该方法可以正常工作。.我观看的视频对此有帮助: