Je ne peux pas obtenir la carte! Tout ce que je peux obtenir est null.
Voici le code. p> le manifeste: p> voici le XML: p> J'ai essayé de résoudre ce problème comme cette solution Google Maps Android Android API V2 lance GooglePlayServicesNOTAVAILAVAILIBLEEXCEPEXCEPEXCEPEXCEPException, obsolète, supportMapfragment.getMap () renvoie null
.. mais n'a toujours pas travaillé p> Mise à jour: P> J'ai eu ma carte fonctionner maintenant .. Voici la version de travail modifiée P> public class MainActivity extends FragmentActivity {
private GoogleMap myMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
android.support.v4.app.FragmentManager myFragmentManager = getSupportFragmentManager();
SupportMapFragment mySupportMapFragment
= (SupportMapFragment)myFragmentManager.findFragmentById(R.id.map);
myMap = mySupportMapFragment.getMap();
if(myMap!=null)
myMap.setMyLocationEnabled(true);
}
5 Réponses :
Vous créez un fragment dynamique via un Soit interrupteur sur des fragments statiques ( fragmenttransaction code>. Lorsque vous appelez
commit () code>, le fragment a pas em> ajouté à l'écran, car le
fragmenttransaction code> n'a été prévu que pour se produire - Il n'a pas encore eu lieu. Par conséquent, le
supportfragment code> n'a pas été appelé avec
OncreAreview () code> Pourtant, il n'y a donc pas de
googlemap code>. P>.
GoogleMap code> jusqu'à une fois la transaction traitée. P >
Désolé: $ mais comment puis-je retarder l'utilisation de la carte Google que j'ai essayé de l'appeler à Onresume () et n'a pas fonctionné. Pas sûr que ce que tu veux dire
@Prog: Après avoir appelé commit () code> sur la transaction, appelez
post () code> sur certains
Voir code> (ou un gestionnaire code> > Si vous en avez un). Au moment où le calendrier
Runnable code> est appelé, le
GoogleMap code> devrait exister. Ou, encore une fois, passez à des fragments statiques.
J'utilise un fragment statique via la disposition XML, mais certains téléphones ont toujours ce problème. Le GS2 d'un testeur fonctionne pendant que le GS2 d'un autre testeur ne le fait pas. Cela pourrait-il avoir quelque chose à voir avec Google Play Services non disponible sur l'appareil?
@JMRBOOSTES: Non, dans la mesure où vous auriez dû comprendre que c'était le problème avant d'essayer de faire quoi que ce soit avec des cartes v2.
ExécuterSetPendingTransactions () dans la classe FragmentManager a été conçue pour fixer ce délai. De DOCUMANTSTIVES: Une fois une fragment detransaction engagée avec FragmentTransaction.Commit (), il est prévu d'être exécuté de manière asynchrone sur le fil principal du processus. Si vous souhaitez exécuter immédiatement une telle opération en attente forte>, vous pouvez appeler cette fonction (uniquement du fil principal) à le faire. Notez que tous les rappels et autres comportements connexes seront effectués à partir de cet appel, alors faites attention à ce que cela s'appelle. P>
Après avoir appelé fragman.executePendingTransactions () code> aussi je ne peux pas obtenir de carte, idem nullpointeException b>
J'ai essayé exécutant de l'exécution code> aussi bien et il est toujours null après l'avoir appelé.
Une autre façon de le résoudre. Impliez une interface dans la carte de communication pour communiquer à l'activité lorsqu'elle est prête pour la création de Googlemap. Ensuite, il vous suffit de mettre en œuvre l'auditeur dans l'activtiy: p>
Meilleure réponse. La manipulation de la nature asynchrone du processus de création est la bonne façon d'aller imo. Quelque chose d'autre et votre juste devinez que c'est le bon moment est le bon moment pour accéder à l'objet.
Déplacez l'extrait de code:
Carte Googlemap; map = fragment.getmap (); p>
// la carte n'est pas null p>
si (map! = null) { p> à ONRESUME (), cela résoudra votre problème. P> P>
J'ai étendu la classe MapFragment et ajouté un auditeur. Le Doc sur GetMap () Dites:
... null si la vue du fragment n'est pas encore prête. Cela peut arriver si le cycle de vie de fragment ne s'est pas passé sur OnCreateView (Layoutinflater, groupe de visit-View, Bundle) ... P> BlockQuote>
Puis j'appelle l'auditeur après OncreAreview. J'ajoute la classe p>
xxx pré> } p>
après dans l'activité d'appel ou le fragment ... p>
xxx pré> < / p>
très bonne solution, à ce moment-là, il semble être l'optimal
Vous ne pouvez pas simplement utiliser surViewCreated directement à la place?
Votre solution la mise à jour a eu lieu pour moi. +1