1
resposta

Qual a diferença?

Assistindo as video-aula de sobre o mapa somos apresentados a duas formas de acessar o mapa, a primeira e direto da activity do google maps

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);

E a segunda na aula seguinte e fazendo na "mão" a qual o codigo ficaria dessa forma.

super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_mapa);

        FragmentManager maneger = getSupportFragmentManager();
        FragmentTransaction tx = maneger.beginTransaction();
        tx.replace(R.id.frame_mapa,new SupportMapFragment());
        tx.commit();

Analizando ambos os casos percebi que os dois métodos usam a classe 'SupportMapFragmente()' mas de maneira diferente, queria entender qual a diferença de um método para o outro e quando e ideal usar um ou o outro.

1 resposta

Olá Rodrigo,

Usamos a primeiro forma quando queremos acesso o objeto GoogleMap de fora do SupportMapFragment, por exemplo, dentro da Activity que usa o Fragment. Usamos o getSupportFragmentManager() para encontrar o Fragment do mapa na tela com o id R.id.map. Depois de pegar a referência do Fragment, basta invocar o método getMapAsync().

Na segunda forma, fazemos o getMapAsync dentro do próprio Fragment e usamos essa forma quando só precisamos acessar o mapa de dentro do próprio Fragment. Nesse caso, o código que você postou só coloca o Fragment do mapa na Activity e não manipula diretamente o mapa.