2017-02-26 8 views
-2

おはよう!Android Logcatエラー:NULLオブジェクト参照で仮想メソッド 'double android.location.Location.Location.getLatitude()'を呼び出そうとしました

現在、私のコードがAndroidデバイスの1つで動作するジレンマが発生していますが、もう1つは強制的に終了します。私のlogcatに基づいて

が、これは誤りである:ここでは

02-27 06:37:29.134 23579-23579/com.example.maui.dabtrain E/UncaughtException: java.lang.NullPointerException: Attempt to invoke virtual method 'double android.location.Location.getLatitude()' on a null object reference 
                       at com.example.maui.dabtrain.MainActivity.onMapReady(MainActivity.java:504) 
                       at com.google.android.gms.maps.SupportMapFragment$zza$1.zza(Unknown Source) 
                       at com.google.android.gms.maps.internal.zzt$zza.onTransact(Unknown Source) 
                       at android.os.Binder.transact(Binder.java:507) 
                       at com.google.android.gms.maps.internal.bw.a(:com.google.android.gms.DynamiteModulesB:82) 
                       at com.google.maps.api.android.lib6.impl.bf.run(:com.google.android.gms.DynamiteModulesB:1805) 
                       at android.os.Handler.handleCallback(Handler.java:751) 
                       at android.os.Handler.dispatchMessage(Handler.java:95) 
                       at android.os.Looper.loop(Looper.java:154) 
                       at android.app.ActivityThread.main(ActivityThread.java:6688) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358) 

は私の場所のためのコードです:

 gMap = googleMap; 

     if(!gMap.isMyLocationEnabled()) 
      gMap.setMyLocationEnabled(true); 

     LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
     Location myLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 


     if (myLocation == null) { 
      Criteria criteria = new Criteria(); 
      criteria.setAccuracy(Criteria.ACCURACY_COARSE); 
      String provider = lm.getBestProvider(criteria, true); 
      myLocation = lm.getLastKnownLocation(provider); 
     } 


    LatLng userLocation = new LatLng(myLocation.getLatitude(), myLocation.getLongitude()); 
    gMap.animateCamera(CameraUpdateFactory.newLatLngZoom(userLocation, 13), 1500, null); 

コードの残りの部分はGoogleのマーカー、ポリライン、半径ためのものですなど

ありがとうございました!

+0

トライ読み取りを使用しているときは、常にnullをチェックする必要があり、そうは言っても、nullとして返されますこれは、 'mylocation'はヌルを返す' http:// stackoverflow.com/questions/20438627/getlastknownlocation-returns-null' –

+0

重複:[NullPoiterExceptionとは何ですか? t](http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do-i-fix-it) –

+0

@Rotwang - あなたは私に何を案内してもらえますか何をする?ありがとうございました。 –

答えて

0

それが原因getLastKnownLocationのですが、あなたがこの方法を見れば

https://developer.android.com/reference/android/location/LocationManager.html#getLastKnownLocation(java.lang.String)

This can be done without starting the provider. Note that this location could be out-of-date, for example if the device was turned off and moved to another location. If the provider is currently disabled, null is returned.

getLastKnownLocation

+0

申し訳ありませんが、私は今失っています。では、私は今何をすべきですか? –

+0

'LatLng userLocation = new LatLng(myLocation.getLatitude()、myLocation.getLongitude());の前に' if(myLocation!= null) 'を追加します。 ' – WenChao

+0

ですが、私が行った場合、私のLocation.distanceBetweenにエラーが発生します。そのため、最初にif(myLocation!= null)文を削除しました。ハハ! –

関連する問題