如何将 currentLocation ActivityOne 传递给 ActivityTwo?

How to pass currentLocation ActivityOne to ActivityTwo?

我正在尝试将 currentLocation 从 ActivityOne 传递到 ActivityTwo,但它传递了空值。

在我的 activity 中,如果用户已经登录,它将重定向到另一个 activity。

 private void nextActivity(){
        Intent main = new Intent(FirstActivity.this, ListActivity.class);
        main.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
        main.putExtra("Lat",    latitude);  //String
        main.putExtra("Long",longitude);   //String
        startActivity(main);
}

这是获取用户位置的代码。我在数据为空和数据不为空的地方添加了一些注释。

 private void checkLocationPermission(){
    try{
        if(ActivityCompat.checkSelfPermission(this, mPermission)
                != MockPackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(this, new String[] {mPermission}, REQUEST_CODE_PERMISSION);
        }else {
            inBuildGoogleApiClient();
        }
    } catch(Exception e){
        e.printStackTrace();
    }
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults){
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if(requestCode == REQUEST_CODE_PERMISSION){
        if(grantResults.length == 1 && grantResults[0] == MockPackageManager.PERMISSION_GRANTED){
            inBuildGoogleApiClient();
        }else{
            Log.d("ON REQUEST PERMISSION", "FAILED");
        }
    }
}
@Override
public void onConnected(Bundle bundle){
    locationRequest = LocationRequest.create();
    locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    locationRequest.setInterval(10000);
    if(ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) !=
            PackageManager.PERMISSION_GRANTED){
        Log.d("ONCONNECTION", "FAILED");

        return;
    }else{
        Log.d("ONCONNECTION", "PASS");
    }
    LocationServices.FusedLocationApi.requestLocationUpdates(client, locationRequest, this);
    lastLocation = LocationServices.FusedLocationApi.getLastLocation(client);
    if(lastLocation != null){
        latitude = String.valueOf(lastLocation.getLatitude());
        longitude = String.valueOf(lastLocation.getLongitude());
        Log.d("Latitude", "" + latitude);
        Log.d("Longtiude", "" + longitude);
    }
    updateUI();
}
@Override
public void onConnectionSuspended(int i){

}
@Override
public void onLocationChanged(Location location){
    latitude = String.valueOf(location.getLatitude());
    longitude = String.valueOf(location.getLongitude());
    Log.d("Latitude", "" + latitude);
    Log.d("Longitude", "" + longitude);
    updateUI();
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult){
    inBuildGoogleApiClient();
}
synchronized void inBuildGoogleApiClient(){
    client = new GoogleApiClient.Builder(this).addConnectionCallbacks(this).
            addOnConnectionFailedListener(this).addApi(LocationServices.API).build();
}
@Override
protected void onResume() {
    if(AccessToken.getCurrentAccessToken() != null){
        checkLocationPermission();
        Log.d("TEST TEST", "" + latitude);   // RETURNS NULL
        nextActivity();
    }
    if(client != null){
        client.connect();
    }
    super.onResume();
}
@Override
protected void onDestroy(){
    super.onDestroy();
    if(client != null){
        client.disconnect();
    }
}
void updateUI(){
    Log.d("LOCATION L", "" + latitude ); // SHOWS THE RIGHT LAT
    Log.d("LOCATION LON", "" + longitude); //SHOWS THE RIGHT LON
}
@Override
protected void onPause() {
    super.onPause();
}

有谁知道我该如何解决这个问题?谢谢

这里再次调用 nextActivity

@Override
public void onLocationChanged(Location location){
    latitude = String.valueOf(location.getLatitude());
    longitude = String.valueOf(location.getLongitude());
    Log.d("Latitude", "" + latitude);
    Log.d("Longitude", "" + longitude);
    updateUI();
    nextActivity();
}