Ich möchte einfach eine Mapview einen Klick erkennen, um eine andere Aktivität aufzurufen.android: MapView erkennt keine Klicks
Bis jetzt habe ich das reguläre "onClick" ausprobiert, das in normalen Views immer für mich funktionierte, gefolgt von dem Überschreiben von "onTouchEvent" und nicht zuletzt von einem onClickListener.
Ich habe alle drei Möglichkeiten in den folgenden Code. Jede Hilfe wird sehr geschätzt.
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
public class HelloMapView extends MapActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
final MapView map;
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
map = (MapView) findViewById(R.id.mapview);
map.setOnClickListener(new MapView.OnClickListener() {
public void onClick(View v){
System.out.println("I listened!");
}
});
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
@Override
public boolean onTouchEvent(MotionEvent arg0) {
System.out.println("onTouchEvent happened!");
super.onTouchEvent(arg0);
return super.onTouchEvent(arg0);
}
public void onClick(){
System.out.println("onClick entered!");
}
}
Das Problem mit einem Overlay ist, dass ich nicht "StartActivityForResult" daraus, soweit ich weiß, aufrufen kann. Also selbst wenn ich das ganze "where-did-the-user-click-ding" in einem Overlay mache, muss ich meine Map Activity irgendwie auslösen, um "StartActivityForResult" unter Verwendung der Daten aus dem Overlay – Ben
Overlays aufzurufen werden normalerweise als innere Klassen implementiert. Es wird also möglich sein, Activity-Methoden von ihnen aufzurufen. Siehe meine bearbeitete Antwort. – kgiannakakis
Ah, ich verstehe. Ich wusste diese Tatsache über Overlays nicht. Vielen Dank, ich werde es versuchen! – Ben