2017-03-01 103 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

你應該做的裏面的onCreate通話()方法 – Hareesh

+0

顯然我在onCreate()中調用。我只是沒有提到。無論如何,再次檢查。我編輯了 –

+0

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

回答

0

onCreate方法先調用然後再調用onStart。所以你的情況,如果mGoogleApiClient沒有在連接建立,將null.move從這個的onCreate代碼返回到調用onStart

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

我會做這樣的事情在onStart

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

它調用else塊,但再次mLastLocation仍然爲空。 –

+0

檢查一個真實的設備和mashmellow和以上的設備,你必須徵得許可。 – Hareesh

+0

我在我的手機裏這是棒棒糖。 –