Enregistrement MapFragment Maps (v2) de l'État dans Android
Je suis en train de travailler avec la nouvelle API GoogleMaps (v2) et ont quelques problèmes avec le fragment. J'ai deux fragments de mon application (Carte, Liste) et l'utilisateur peut basculer entre eux. Fonctionne très bien jusqu'à présent avec ce code:
if (itemPosition == 0) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragmentpos, myMapFragment).commit();
} else if (itemPosition == 1) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragmentpos, myListFragment).commit();
}......
Quand je travaille avec la carte, accéder à la liste fragment, puis retour vers le fragment de carte, la dernière position de la carte n'est pas enregistré. Ce n'est pas ce que je veux, je veux que la carte est dans la mémoire de l'état comme je l' "gauche"..
Comment puis-je accomplir? J'ai essayé d'enregistrer la position de la caméra dans
public void onSaveInstanceState(Bundle outState){
outState.putDouble("LAT", mMap.getCameraPosition().target.latitude);
outState.putDouble("LON", mMap.getCameraPosition().target.longitude);
outState.putFloat("BEAR", mMap.getCameraPosition().bearing);
...
}
et le restaurer dans onCreateView(), mais l'ensemble est toujours null. Le onSaveInstanceState n'est pas appelée si je remplace les fragments.
Alors, comment puis-je enregistrer l'état de la carte?
OriginalL'auteur Toni4780 | 2013-01-01
Vous devez vous connecter pour publier un commentaire.
Si vous
replace()
d'un fragment, le vieux fragment de vues sont détruits, ce qui prend votreMapView
et, sans doute, laCameraPosition
.onSaveInstanceState()
est surtout pour les changements de configuration, tels que l'écran de rotations.MapFragment
etSupportMapFragment
déjà retenir laCameraPosition
(qui, d'ailleurs, estParcelable
, de sorte que vous pouvez sauvegarder l'ensemble de l'objet dans leBundle
plutôt que fragmentaire).Vous pourriez envisager d'utiliser
show()
ethide()
au lieu dereplace()
, de sorte que le fragment et son point de vue autour de bâtons.Sur le dessus de ma tête, non. Désolé!
Merci pour la réponse rapide. Je vais le garder et d'en faire rapport, si je trouve quoi que ce soit.
Ce dont je suis sûr, c'est sa la vue, parce que les commandes de zoom sur le deuxième fragment d'activer et de désactiver tout comme ils sont censés (zoom arrière bouton démarre désactivé, et active une fois que je clique sur le bouton zoom, et de nouveau se désactive lorsque je clique sur le bouton zoom arrière).
J'ai eu le même problème avec le mapfragment pas de montrer et de cacher correctement lors de l'utilisation de plusieurs carte fragments. Mauvais post si je palmes d'une solution à ce problème, mais peut-être qu'il devrait l'être dans une autre question en se concentrant sur ce.
OriginalL'auteur CommonsWare
J'ai résolu ce problème en maintenant une référence à la
CameraPosition
sur la carte dans leonDestroyView()
méthode du fragment; puis en utilisant leCameraPosition
quand reinstatiating la carte.Le contexte de ma solution a ses propres particularités, mais en gros, j'ai un fragment de carte imbriqué dans un autre fragment (dont je ne suis accroché, même après qu'il est remplacé). C'est donc le code dans le parent du fragment
onActivityCreated()
méthode:Puis plus tard dans la même classe que j'ai:
OriginalL'auteur Mick Byrne