У меня было приложение для определения местоположения, но я изменил код, и теперь местоположение всегда возвращает значение null. К сожалению, я не уверен, какой код я изменил, но я просто не могу заставить его работать.
Кто-нибудь может понять, почему это возвращает ноль? Я работаю над этим весь день без всякого удовольствия. код ниже:
....imports....
public class Clue extends Activity {
public static double latitude;
public static double longitude;
Criteria criteria;
LocationManager lm;
LocationListener ll;
Location location;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.questions);
criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
ll = new MyLocationListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);
areWeThereYet();
}
private void areWeThereYet()
{
if(weAreThere())
{
showMsgBox("There");
}
else if(location!=null)
toastMsg("not there");
}
private boolean weAreThere() {
location = getLocation();
if (location!=null)
{
longitude = location.getLongitude();
latitude = location.getLatitude();
return inCorrectPlace(question);
}
else
{
toastMsg("Location not ready yet");
return false;
}
}
private Location getLocation() {
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);
return lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
}
}
public class MyLocationListener implements LocationListener
{
public void onLocationChanged(Location loc)
{
Clue.longitude = loc.getLongitude();
Clue.latitude = loc.getLatitude();
}
}
Я добавил все разрешения и упростил свой код, чтобы вы все могли видеть, что происходит.
Благодарность,
Бен
1 ответ
Это null, потому что когда вы впервые запускаете свою активность в onCreate, она еще не готова. Когда вы в конечном итоге получаете обновление местоположения через onLocationChanged, вы устанавливаете широту/долготу в своем классе Clue, но это все... ничто не вызывает повторно ваш метод areWeThereYet
. Вам нужно будет вызвать этот метод после обновления вашего местоположения.
Похожие вопросы
Связанные вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.