В настоящее время я начинаю разрабатывать приложения для Android и изучаю это руководство о том, как использовать и улучшать приложение карт Google.
Мне удалосьпоказать на экране карту, при прикосновении я получаю адрес местоположения (через обратное геокодирование) с отображением Toast
.Но вот моя проблема - когда вы нажимаете несколько раз подряд по карте, вы получаете все toasts
один за другим, и каждому из них потребуется время (в моем случае - Toast.LENGTH_LONG
), чтобы исчезнуть.Я хочу, чтобы приложение автоматически закрывало старый тост и показывало новый тост с новым адресом.
В других ресурсах, которые я обнаружил, я должен использовать метод toast.cancel()
для этой цели, но у меня возникают проблемы с его использованием - я уже переопределил onTouchEvent
- как я могу обнаружить, что есть новое касание поверхкарта пока toast
показывает?Или, может быть, вы предложите мне лучший способ скрыть уже открытый toast
?
Я пытался сделать мой Toast
адрес глобальным, но он также не работал.
Вот мой код для приложения:
@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView) {
//---when user lifts his finger---
if (event.getAction() == 1) {
GeoPoint p2 = mapView.getProjection().fromPixels((int) event.getX(), (int) event.getY());
Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault());
try {
List<Address> addresses = geoCoder.getFromLocation(p2.getLatitudeE6() / 1E6,
p2.getLongitudeE6() / 1E6, 1);
String add = " ";
if (addresses.size() > 0)
for (int i=0; i<addresses.get(0).getMaxAddressLineIndex();i++)
add += addresses.get(0).getAddressLine(i) + "\n";
Toast address;
address = Toast.makeText(getBaseContext(), add, Toast.LENGTH_LONG);
address.show();
}
catch (IOException e) {
e.printStackTrace();
}
return true;
}
return false;
}