У меня есть класс GetMyLocation, который получает текущее местоположение пользователя. Теперь я пытаюсь вызвать объект этого класса из другого класса, ShowMap2. Но я не могу отправить обновленное местоположение в новый класс.Android - Получить переменную из oncreate() другого класса
Я не включил другие переопределения для GetMyLocation здесь.
Что у меня есть:
public class ShowMap2 extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_showmap);
GetMyLocation myLocation = new GetMyLocation();
myLat = myLocation.GetCurrentLat();
myLon = myLocation.GetCurrentLon();
}
Это класс, который получает место:
public class GetMyLocation extends Activity implements LocationListener {
protected LocationManager locationManager;
protected LocationListener locationListener;
Location location;
public static double myLat, myLon;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
location = locationManager.getLastKnownLocation(locationManager.GPS_PROVIDER);
this.myLat = location.getLatitude();
this.myLon = location.getLongitude();
}
public double GetCurrentLat(){
return this.myLat;
}
public double GetCurrentLon(){
return this.myLon;
}
Приведенный выше код возвращает 0.0 как для широты и долготы.
Я пробовал все возможные способы, о которых я мог думать, но я всегда получаю 0.0. Я знаю, что сам класс получает мой текущий lat и lon, но я не могу передать его правильно. Может кто-нибудь, пожалуйста, помогите мне здесь?
Спасибо.
PS:
Я нашел эту нить, и попытался его соответствующим образом, но безрезультатно. Еще нули.
How to access this variable from an Android onCreate method?
Единственное различие в вопросе в ссылке, класс является статическим. Когда я ставил свой статический класс, он говорит: Модификатор «статический» здесь не разрешен.
Мой обновленный код:
public class GetMyLocation extends Activity implements LocationListener {
protected LocationManager locationManager;
protected LocationListener locationListener;
Location location;
static double myLat, myLon;
double GetCurrentLat(){
return myLat;
}
double GetCurrentLon(){
return myLon;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
location = locationManager.getLastKnownLocation(locationManager.GPS_PROVIDER);
this.myLat = location.getLongitude();
this.myLon = location.getLongitude();
}
EDIT: Обновлен код, который работает:
public class GetMyLocation implements LocationListener {
//public class GetMyLocation extends Activity implements LocationListener {
private static final LatLng HAMBURG = new LatLng(43.48484521,-80.5274279);
private GoogleMap map;
protected LocationManager locationManager;
protected LocationListener locationListener;
Location location;
private static double myLat, myLon;
GetMyLocation(Activity activity){
locationManager = (LocationManager) activity.getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
location = locationManager.getLastKnownLocation(locationManager.GPS_PROVIDER);
this.myLat = location.getLatitude();
this.myLon = location.getLongitude();
}
double GetCurrentLat(){
return this.myLat;
}
double GetCurrentLon(){
return this.myLon;
}
получения значений местоположение с помощью ShowMap2:
GetMyLocation myLocation = new GetMyLocation(this);
Вы отправили переменные с помощью намерения в secondActivity? – KOTIOS
просто создает экземпляр класса GetMyLocation myLocation = new GetMyLocation(); 'не вызывает методы на нем' onCreate (Bundle savedInstanceState); ' Вам нужно узнать, как создать новую активность. –