2010-11-20 36 views
1

Lorsque je modifie l'orientation de mon écran dans Android, un OnItemSelectedListener à partir d'un Spinner est appelé.OnItemSelectedListener appelé sur la rotation de l'écran

Ce n'est pas seulement l'émulateur, il arrive aussi sur un téléphone physique.

Comment puis-je empêcher que cela se produise?

Cheers.

+0

L'activité est recréée lorsque vous faites pivoter l'appareil. Vous devez gérer cela, ne pas arrêter de se produire. Lisez le chapitre sur le cycle de vie de l'activité sur http://developer.android.com/guide/topics/fundamentals.html#actlife – Pentium10

Répondre

2

Les essoreuses sont toujours sélectionnées. Votre OnItemSelectedListener sera appelée en cas de modification de l'état du Spinner, y compris lorsque le Spinner est configuré pour la première fois. Un changement d'orientation normal entraînera la destruction et la recréation de votre activité. Ainsi, si votre OnItemSelectedListener est appelée lorsque votre activité apparaît pour la première fois à l'écran, elle sera rappelée lorsque l'orientation est modifiée.

Comment puis-je empêcher que cela se produise?

Vous pourriez être en mesure de jouer avec le moment où vous appelez setOnItemSelectedListener() par rapport à setAdapter(), pour voir si ça aide.

+0

Ok, merci pour l'information, c'est logique. Comment puis-je jouer avec les horaires? Je suis nouveau à Android alors s'il vous plaît utiliser des mots simples;) – Entropy1024

+0

@ Entropy1024: Modifier l'ordre des instructions Java. – CommonsWare

4

Vous obtiendrez également un second appel si la propriété selectedItemPosition du compteur n'est pas égale à zéro lors de la rotation de l'écran, car Android positionne la position à ce qu'elle était avant la rotation. Utilisez onSaveInstanceState pour compter le nombre de spins dans une position non nulle et utilisez ce nombre pour que le code OnItemSelected revienne juste jusqu'à ce que le compte ait été décrémenté à zéro.

Vous devez également être extrêmement prudent avec les fileurs qui peuvent avoir une visibilité de View.GONE. Je vais ajouter un peu plus de texte ici quand je peux trouver le temps de décrire exactement comment les gérer.

+1

Pourriez-vous s'il vous plaît écrire pourquoi vous devriez faire attention avec les fileurs qui peuvent avoir une visibilité de View.GONE. Merci d'avance –