我试图将currentLocation从ActivityOne传递给ActivityTwo,但它传递的是null值。
在我的activityOne中,如果用户已经登录,它将重定向到另一个活动。
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);
}这是获取用户位置的代码。我添加了一些注释,其中数据为null,而数据不是。
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();
}有人知道我怎么解决这个问题吗?谢谢
发布于 2018-01-10 17:18:10
这里再次调用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();
}https://stackoverflow.com/questions/48192674
复制相似问题