У меня есть действие с кнопкой, и при нажатии этой кнопки должно отображаться местоположение. Но первый щелчок всегда возвращает ноль, второй щелчок возвращает правильную информацию. Я попытался использовать задержку, но это только задерживает создание диалогового окна предупреждения, но первое значение при первом нажатии кнопки равно нулю.
public class MainActivity extends AppCompatActivity {
private FusedLocationProviderClient fusedLocationClient;
private Double longitude, latitude;
private Float accuracy;
@Override
protected void onCreate(Bundle savedInstanceState) {
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
Button testButton = findViewById(R.id.test_button);
testButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getCurrentLocation();
new AlertDialog.Builder(MainActivity.this)
.setTitle("Current Location")
.setMessage("Location: " + latitude +", "+ longitude +
"\nAccuracy: " + String.format(Locale.getDefault(),"%.2f", accuracy) +"m")
.setNegativeButton(android.R.string.cancel, null)
.show();
}
}
});
}
private void getCurrentLocation() {
fusedLocationClient.getLastLocation()
.addOnSuccessListener(this, new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
// Get last known location, and check for null.
if(location!=null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
accuracy = location.getAccuracy();
}
}
});
}