I'm currently starting to develop Android applications and I've been following up a this tutorial on how to use and improve the Google maps application.
I've managed to show up on screen the map, on touch I get the address of a location (via Reverse Geocoding) with the showing of a Toast
. But here is my problem - when you click a number of consecutive times over the map you will get all the toasts
one after other and each of them will take his time (in my case - Toast.LENGTH_LONG
) to disappear. I want to make the application automatically close the older toast and show a new toast with the new address clicked.
In other resources I found I should use the toast.cancel()
method for this purpose, but I experience trouble using it - I have already overrided the onTouchEvent
- how can I detect there is a new touch over the map while the toast
is showing?
Or maybe you would suggest me a better way of hiding the already open toast
?
I've tried to make my Toast
address a global one, but it wasn't working also.
Here is my code for the application:
@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;
}