私はクロスデバイス開発用にMvvmCrossフレームワークを使用しています。 Androidエミュレータでアプリケーションをテストすると(まだ物理デバイスでテストできません)、LocationManagerでRequestLocationUpdatesを呼び出すときにJava.Lang.IllegalArgumentException例外が発生します。また、関連性があるかどうかはわかりませんが、ステートメント上にマウスを置くとRequestLocationUpdatesが「不明なメソッド」であることがわかります。これは、例外が発生したかどうかにかかわらず発生します。MonoDroid LocationManager.RequestLocationUpdatesはJava.Lang.IllegalArgumentException例外を返します
それだけで私は自分のアプリケーションでそれを呼び出す二度目を発生するようですが、それは
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から継承しているクラスを動作するはずのような使用の間にそれをクリアコードが見えます。 Objectと私は、PlatformSpecificStartとStopが適切な時に呼び出されたことを確認しました(つまり、Stopは確実に2番目のStartの前に呼び出されます)。誰かが間違っていることを教えてもらえますか?
私がしました厳密に見てみると、例外は "this"がnullであることが判明しました!どのように起こることができますか? –
どこにでも投稿できるサンプルがありますか? – Stuart
こんにちはスチュアート - 私はちょうど質問に答えようとしましたが、私はそのようなノブなので、私をさせません!私は許可されると数時間後にそれをすることができます。 –