Question

J'ai un FragmentActivity qui accueille un FragmentStatePagerAdapter. Le pager contient plusieurs instances du même fragment, afin que l'utilisateur puisse glisser entre les éléments d'une liste. Je veux être en mesure de fournir à l'utilisateur un menu d'options qui agissent uniquement sur l'élément visible.

Par exemple, j'ai une liste des images affichées dans imageviews à l'intérieur des fragments. Je veux un élément de menu d'options permettant à l'utilisateur de définir l'image comme fond d'écran leur.

Au moment où je tente cela, quand onPrepareOptionsMenu est appelé, le code est appelé dans plusieurs fragments (généralement le courant + suivant). Le même lorsqu'un élément est sélectionné. Cela provoque la mauvaise image devant être réglée comme fond d'écran.

Comment puis-je empêcher le menu des options de déclenchement pour plus que le fragment actuellement visible?

Était-ce utile?

La solution

Ma solution a été d'utiliser la méthode de setOnPageChangeListener du ViewPager afin de garder une trace dont l'indice de Fragment est actuellement visible avec le rappel de onPageSelected. Il vous reste à obtenir l'indice initial vous, mais dans mon cas, c'était trivial

Autres conseils

Vous pouvez intercepter le rappel de menu d'options onOptionsItemSelected et appeler explicitement de l'activité l'élément du fragment correct il, retournant true pour indiquer que vous avez manié.

L'astuce consiste à changer sethasoptions (vrai | faux) sur chaque fragment avant peuplant menu. Cela m'a déjà aidé

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top