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

我在我的手机里这是棒棒糖。 –