Извините за основной вопрос, но сейчас я изучаю программирование Android.
Я использую GoogleFusedProviderClient, чтобы получить местоположение приложения из пользовательского класса.Я поместил это в класс, поскольку мне нужно назвать это от нескольких действий.
класс Fast:
public class fas {
// get the context from the Activity that uses this class
private Context context;
// Vars to store GPS info
public Double latitude, longitude;
public Float accuracy;
private FusedLocationProviderClient flpc;
fas_functions(Context context) {
this.context = context;
}
public void getAppLocation() {
flpc = LocationServices.getFusedLocationProviderClient(context);
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// Already forced user to enable location
return;
}
flpc.getLastLocation().addOnSuccessListener((Activity) context,
new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
accuracy = location.getAccuracy();
} else {
// No position so request an immediate one
startListener();
}
}
});
}
В своей деятельности я вызываю getAppLocation (), чтобы получить местоположение, а затем пытаюсь использовать Fas.latitude
и Fas.longitude
.Это где я получаю исключение нулевого указателя и не понимаю причину.
Активность:
public class Activity extends AppCompatActivity {
.......
// Import Class fas_functions
fas_functions Fas = new fas_functions(this);
........
private void function check_loc() {
Fas.getAppLocation();
// This will return null and if I use this in Volley for example it will throw a NullPointerException
System.out.println(Fas.latitude);
}