【发布时间】:2020-03-30 23:47:52
【问题描述】:
我有一个带有按钮的活动,单击该按钮时,应显示该位置。但是第一次点击总是返回null,第二次点击返回正确的信息。我尝试使用延迟,但这只会延迟警报对话框的创建,第一次单击按钮时的第一个值仍然为空。
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();
}
}
});
}
【问题讨论】: