2016-07-31 6 views
1

実際の携帯電話でアプリを実行すると、 このエラー(Android 5.0)が発生しないため、奇妙なエラーが発生します。しかしエミュレータ(アンドロイド6.0)にそれは私に、このエラーを与える:Androidの緯度と経度でnullが返される

FATAL EXCEPTION: main Process: com.doppler.stackingcoder.pechhulp, PID: 11424 java.lang.NullPointerException: Attempt to invoke virtual method 'double android.location.Location.getLatitude()' on a null object reference at com.doppler.stackingcoder.pechhulp.PechhulpActivity.onLocationChanged(PechhulpActivity.java:171) at com.doppler.stackingcoder.pechhulp.PechhulpActivity.onMapReady(PechhulpActivity.java:126)

そして、これは私のPechhulpActivityです:

https://gist.github.com/soufyanekaddouri/6e3a3746be137e2680caa32d7bb746d9

私は、誰かが私が間違っているのを知っている願っています。

答えて

1

クラッシュに関しては、少なくとも1つのプロバイダがからLocationを返すと仮定しています。これは、デバイスまたはエミュレータ上では必須ではありません。すべてのプロバイダがnullgetLastKnownLocation()から返すケースを処理する必要があります。これは、場所を使用しようとしないことによるかもしれません。または、場所の更新を要求し、最初の更新の場所を使用します。

+0

私のための例がありますか?私はちょうど初心者です – Stackingcoder

+0

@Stackingcoder:場所の更新をリクエストして、また、このサンプル(https://github.com/commonsguy/cw-omnibus/tree/master/WebKit/GeoWeb2) getLastKnownLocation() 'を呼び出しますが、この例は' WebView'を使用しているものを使用しています。私はより一般的なアプリですが、位置の更新をリクエストするだけで、[このサンプル](https://github.com/commonsguy/cw-omnibus/tree/master/Internet/Weather)を持っています。 – CommonsWare