Xamarin:无法注册位置更新&引用;“指定的强制转换无效”;

Xamarin:无法注册位置更新&引用;“指定的强制转换无效”;,xamarin,gps,Xamarin,Gps,所以我正在开发一个应用程序,它可以简单地将你的坐标返回给用户。只要我在我的主要活动中有它,它就工作得很好。 现在我把所有这些都变成了自己的类。现在,当我开始这个类时,发生的第一件事是这行代码: public void StartLocationUpdates() { _locationManager.RequestLocationUpdates(_locationProvider, 0, 0, this); } 现在我的手机应该可以开始监听位置更新了。但当我拨打这条电话时,我得到: S

所以我正在开发一个应用程序,它可以简单地将你的坐标返回给用户。只要我在我的主要活动中有它,它就工作得很好。 现在我把所有这些都变成了自己的类。现在,当我开始这个类时,发生的第一件事是这行代码:

public void StartLocationUpdates()
{
    _locationManager.RequestLocationUpdates(_locationProvider, 0, 0, this);
}
现在我的手机应该可以开始监听位置更新了。但当我拨打这条电话时,我得到:

System.InvalidCastException:指定的强制转换无效

为什么会这样? 还有,我需要这个代码吗?因为方法“InitializeLocationManager()”应该为我做这件事,对吗


谢谢:)

上周也有同样的。从模拟器或设备中删除应用程序和所有与调试相关的Xamarin内容,如“Mono共享运行时”和“Xamarin.Android API-x支持”。之后,清理和重建项目。使用新的部署,它应该可以再次工作。至少对我来说是这样。

我今天也犯了同样的错误,找到了解决办法:确保你要传递到的服务

_locationManager.RequestLocationUpdates(_locationProvider, 0, 0, this);
最后一个参数继承自Java.Lang.Object,如下所示:

public class GpsService : Java.Lang.Object, ILocationListener
{
    ...
}

您是否检查过文档以查看您传递的参数是否与方法调用的签名匹配?是的。我从教程中得到了一切。但是它崩溃了:(你在遵循哪一个教程?它来自官方的xamarin指南:你有没有读过一张红色的大纸条,上面写着“这个食谱不推荐使用”?嘿,谢谢!我很快会尝试一下!但是我是不是先初始化位置管理器,然后注册位置更新?或者这是自动发生的,我根本不需要调用注册函数?好的,我只是试了一下你说的。虽然我现在不知道mono共享运行时和xamarin.android api-x支持是什么?我做了清理并重建所有内容。但我得到了相同的错误:(如果您使用调试生成配置构建应用程序,那么Xamarin也会安装这两个应用程序以最小化构建时间。转到设备或模拟器上的“设置”应用程序并选择“应用程序”。之后,您将获得已安装应用程序的列表。确保选择“所有应用程序”。滚动浏览该列表,您应该会同时看到。再次向大家问好,谢谢!!毫无疑问,这也没有起作用。我想我可能在理解手机上的gps是如何工作的方面遇到了困难。为了更清楚地说明这一点,我问了一个问题:如果您也能查看一下,也许这会让我们大家都轻松一点。谢谢你已经花了很多时间:)