2017-03-01 2 views
0

今、私は奇妙な問題があります。 私はFusedLocationApi code.check it.I'mのみ関連するコードに言及があります。LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient)が動作していません。

public class MainActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener{ 

     GoogleApiClient mGoogleApiClient; 
     Location mLastLocation; 



     @Override 
     protected void onStart() { 
      mGoogleApiClient.connect(); 
      super.onStart(); 
     } 


      @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


      if (mGoogleApiClient == null) { 
       mGoogleApiClient = new GoogleApiClient.Builder(this) 
         .addConnectionCallbacks(this) 
         .addOnConnectionFailedListener(this) 
         .addApi(LocationServices.API) 
         .build(); 
      } 




    mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); 
        double latitude = mLastLocation.getLatitude(); 
        double longitude = mLastLocation.getLongitude(); 

}  
     @Override 
     protected void onStop() { 
      mGoogleApiClient.disconnect(); 
      super.onStop(); 

     } 

      } 

私は他の活動のために同じコードを書いているとき、今の問題は、このコードは、このactivity.Butのために完璧に働いていますさ同じプロジェクトのmLastLocationがnullを返していて、java.lang.NullPointerExceptionが発生しています。

このクラスの違いは、私がOnMapReadyCallbackも実装していることです。違いはありますか?

このトピックではQ & Aをすべて読んだことがありますが、何の助けも受けていません。 私の側からの間違いは何ですか?

+0

このONSTARTような何かをしますONSTART

mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); double latitude = mLastLocation.getLatitude(); double longitude = mLastLocation.getLongitude(); 

へのonCreateから、このコードnull.move戻ります作成()メソッド – Hareesh

+0

明らかに私はonCreate()を呼び出しました。私はちょっと言及しなかった。とにかく、もう一度チェックする。私は編集しました –

+0

http://stackoverflow.com/questions/29441384/fusedlocationapi-getlastlocation-always-null – siva35

答えて

0

onCreateメソッドfirst、次にonStartが続きます。 mGoogleApiClientが上に接続されていないのであれば、あなたのケースでは、それは私はあなたがのonCreate内で呼び出しを行う必要があります

if(mGoogleApiClient.isConnected()){ 
     // check for last location 
    }else{ 
     mGoogleApiClient.connect(); 
     //check for last location 
    } 
+0

もう一度elseブロックを呼び出していますが、もうmLastLocationはnullです。 –

+0

実際のデバイスを確認してください。マッシュルーム以上のデバイスについては、許可を求める必要があります。 – Hareesh

+0

私は携帯電話でこれを行います。これはLollipopです。 –

関連する問題