【发布时间】:2019-02-04 17:05:30
【问题描述】:
我有一个名为 getLocation() 的方法,它可以通过 FusedLocationClient 找到当前设备的位置。调用此方法后,我得到找到的位置的纬度和经度,并使用 putExtra 将这些值传递给另一个 Activity。在 getLocation() 中,我有一个显示经纬度的 Toast,并且我收到了正确的位置。在活动中,我有另一个 Toast 显示我从 MainActivity 发送的纬度和经度值,但结果是纬度和经度均为空。如果我回去并重新开始活动,我得到的纬度和经度不是空值。有什么想法吗?
其他代码:
case R.id.nearYou:
i = new Intent(MainActivity.this, Ricerca1.class);
if (!isGPS) {
Toast.makeText(this, "Please turn on GPS",
Toast.LENGTH_SHORT).show();
return;
}
isContinue = false;
getLocation();
latitudine = wayLatitude.toString();
longitudine = wayLongitude.toString();
i.putExtra("latPar", longitudine);
i.putExtra("lonPar", latitudine);
i.putExtra("radiusPar", "0.5");
i.putExtra("categoryPar", "Museum;Botanical_and_zoological_gardens;Churches;Cultural_centre;Cultural_sites;Historical_buildings;Library;Monument_location;Photographic_activities;Squares;Theatre;");
startActivity(i);
break;
获取位置:
private void getLocation() {
if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION},
AppConstants.LOCATION_REQUEST);
} else {
if (isContinue) {
mFusedLocationClient.requestLocationUpdates(locationRequest, locationCallback, null);
} else {
mFusedLocationClient.getLastLocation().addOnSuccessListener(MainActivity.this, location -> {
if (location != null) {
wayLatitude = location.getLatitude();
wayLongitude = location.getLongitude();
Toast.makeText(MainActivity.this,String.format(Locale.US, "%s - %s", wayLatitude, wayLongitude), Toast.LENGTH_SHORT).show();
} else {
mFusedLocationClient.requestLocationUpdates(locationRequest, locationCallback, null);
}
});
}
}
}
【问题讨论】:
-
getLocation()是否执行任何异步工作?可能wayLatitude和wayLongitude还没有初始化。 -
@BenP。抱歉,我添加了 getLocation 方法...wayLatitude 和 wayLongitude 被声明为 private Double = 0.0;
标签: android android-activity methods