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
    }

Antworten auf die Frage(7)

Ihre Antwort auf die Frage