Woher weiß ich, dass die Karte zur Verwendung mit dem SupportMapFragment bereit ist?
In demonCreate
Methode benutze ich dieSupportMapFragment
eine Karte zeigen.
SupportMapFragment fragment = new SupportMapFragment();
getSupportFragmentManager().beginTransaction()
.add(android.R.id.content, fragment).commit();
In diesem Zusammenhang möchte ich einen Marker hinzufügen. Das Problem ist, wann der Anruf beigetMap
ist null, wann kann ich es erneut versuchen? Gibt es eine Veranstaltung, für die ich mich anmelden kann, oder ist meine Vorgehensweise an sich falsch?
mMap = ((SupportMapFragment)(getSupportFragmentManager().findFragmentById(R.id.map))).getMap();
if(mMap == null)
//what do I do here?
Die Karte wird tatsächlich auf dem Telefon angezeigt, aber ich habe anscheinend kein Glück, die Referenz zum Hinzufügen von Markierungen zu erhalten.
AKTUALISIEREN:
Der Grund, warum ich das erstellt habeSupportMapFragment
über den konstruktor geht da das typischesetContentView
stürzte ab und funktionierte nicht. Dies brachte mich in eine missliche Lage, in der ich meine Referenz nicht erhalten konnteonCreate
Methode, da ich in der Tat die erstellteSupportMapFragment
zu dieser Zeit. In weiteren Untersuchungen scheint es meinesetContentView
Das Problem war, dass im Rahmen des Gesamtprojekts nicht sowohl das Google-Play-Services-Jar als auch das Modul / src eingerichtet wurden. Wenn Sie BEIDES tun,setContentView
Jetzt funktioniert und ich kann die Referenz über erhaltengetMap()
wie ich es erwarten würde.
lots.xml ...
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
LotsActivity.java ...
public class LotsActivity extends FragmentActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lots);
GoogleMap mMap;
mMap = ((SupportMapFragment)(getSupportFragmentManager().findFragmentById(R.id.map))).getMap();
if(mMap == null)
//this should not occur now
}