我得到了这段代码
public void TestGPS()
{
Context context;
var locationManager = context.GetSystemService(Context.LocationService) as LocationManager;
locationManager.AddTestProvider("Test", false, false, false, false, false, false, false, Power.Low, Android.Hardware.SensorStatus.AccuracyHigh);
locationManager.SetTestProviderEnabled("Test", true);
}
现在,我无法调试我的代码,因为编译器将上下文标记为"未分配"。 但是我会将上下文分配给哪些人?
谢谢! :)
答案 0 :(得分:2)
传递/需要Context
在Android中很常见。
通常这意味着您必须传递对当前活动的引用。这将是this
内部任何活动,this.Context
内部片段。
如果要在一些没有关于UI /活动的线索的服务中使用此代码,常见的建议是将上下文传递给服务初始化,然后存储对此上下文的引用。要小心,因为这可能会导致内存泄漏(您将存储对活动的引用并保持活动)。
或者,您可以使用所谓的当前上下文:Android.App.Application.Context
。
在您的情况下,如果这是活动代码的一部分,您必须将其更改为:
public void TestGPS()
{
var locationManager = this.GetSystemService(Context.LocationService) as LocationManager;
locationManager.AddTestProvider("Test", false, false, false, false, false, false, false, Power.Low, Android.Hardware.SensorStatus.AccuracyHigh);
locationManager.SetTestProviderEnabled("Test", true);
}
如果这是服务的一部分(非UI),那么:
public void TestGPS()
{
var context = Android.App.Application.Context;
var locationManager = context.GetSystemService(Context.LocationService) as LocationManager;
locationManager.AddTestProvider("Test", false, false, false, false, false, false, false, Power.Low, Android.Hardware.SensorStatus.AccuracyHigh);
locationManager.SetTestProviderEnabled("Test", true);
}
关于这个主题的一些好文章: