クロス デバイス開発に MvvmCross フレームワークを使用しています。Android エミュレーターでアプリをテストすると (物理デバイスではまだテストできません)、LocationManager で RequestLocationUpdates を呼び出すと、Java.Lang.IllegalArgumentException 例外が発生します。また、それが関連しているかどうかはわかりませんが、ステートメントの上にマウスを置くと、RequestLocationUpdates が「不明なメソッド」であると言われます。これは、例外が発生したかどうかに関係なく発生します。
アプリケーションで2回目に呼び出したときにのみ発生するようですが、使用間でそれをクリアするコードは機能するはずです
protected override void PlatformSpecificStart(MvxGeoLocationOptions options)
{
if (_locationManager != null)
throw new MvxException("You cannot start the MvxLocation service more than once");
_locationManager = (LocationManager)Context.GetSystemService(Context.LocationService);
var criteria = new Criteria() { Accuracy = options.EnableHighAccuracy ? Accuracy.Fine : Accuracy.Coarse };
var bestProvider = _locationManager.GetBestProvider(criteria, true);
_locationManager.RequestLocationUpdates(bestProvider, 5000, 2, this);
}
protected override void PlatformSpecificStop()
{
EnsureStopped();
}
private void EnsureStopped()
{
if (_locationManager != null)
{
_locationManager.RemoveUpdates(this);
_locationManager = null;
}
}
これが含まれるクラスは Java.Lang.Object から継承され、PlatformSpecificStart と Stop が適切なタイミングで呼び出されることを確認しました (つまり、Stop は 2 番目の Start の前に確実に呼び出されます)。誰が何がうまくいかないのか教えてもらえますか?