У меня есть активность, у которой есть кнопка, которая открывает новую MapActivity, чтобы выбрать местоположение, нажав на карту.
В карте есть оверлей, который переопределяет метод onTap для получения местоположения, но я хочу вернуть это местоположение в предыдущую активность, но я не знаю, как вернуть геотонус в mapactivity, чтобы вызвать setResult ( ) и finish(), потому что я не могу вызывать их из метода Overlay.onTap.
Любые идеи?
Решается так:
class tapOverlay extends Overlay
{
public GeoPoint lastTap=null;
String strCalle;
private Context context;
public tapOverlay(Context c)
{
this.context=c;
}
}
@Override
public boolean onTap(GeoPoint p, MapView mapView) {
lastTap = p;
mapView.getController().animateTo(p);
...
strCalle = sb.toString(); //from geocoder
...
devolverResultado();
return true;
}
private void devolverResultado()
{
MapActivity ma = (MapActivity) context;
Intent i = new Intent();
Bundle b = new Bundle();
b.putInt("dlat", lastTap.getLatitudeE6());
b.putInt("dlng", lastTap.getLongitudeE6());
b.putString("calle",strCalle);
i.putExtras(b);
ma.setResult(Activity.RESULT_OK, i);
ma.finish();
}
Вызвать новое действие, используя намерение...
Затем, используйте onActivityResult (int, int, Intent), чтобы вызвать новое действие из текущей активности..... U должен вернуть данные из нового действия, когда вы закончите вызываемую деятельность, поскольку вызывающая активность помещается в стек...
Надеюсь, это поможет...:)