Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 沙马林:我应该分配给什么;上下文;?_Android_Xamarin_Xamarin.android - Fatal编程技术网

Android 沙马林:我应该分配给什么;上下文;?

Android 沙马林:我应该分配给什么;上下文;?,android,xamarin,xamarin.android,Android,Xamarin,Xamarin.android,我有这段代码 public void TestGPS() { 语境; var locationManager=context.GetSystemService(context.LocationService)作为locationManager; locationManager.AddTestProvider(“Test”,false,false,false,false,false,Power.Low,Android.Hardware.SensorStatus.AccuracyHigh); loc

我有这段代码

public void TestGPS()
{
语境;
var locationManager=context.GetSystemService(context.LocationService)作为locationManager;
locationManager.AddTestProvider(“Test”,false,false,false,false,false,Power.Low,Android.Hardware.SensorStatus.AccuracyHigh);
locationManager.SetTestProviderEnabled(“测试”,true);
}
现在,我无法调试代码,因为编译器将上下文标记为“未分配”。 但我应该给什么分配上下文呢


谢谢!:)

传递/要求
上下文在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);
}