Domanda

Ho un FragmentActivity che ospita una FragmentStatePagerAdapter. Il cercapersone contiene più istanze dello stesso frammento, in modo che l'utente può scorrere tra le voci di un elenco. Voglio essere in grado di fornire all'utente un menu di opzioni che agire solo sulla voce visibile.

Per esempio, ho un elenco di immagini visualizzate in imageviews all'interno frammenti. Voglio un'opzione di menu che permette all'utente di impostare l'immagine come la carta da parati.

Nel momento in cui provo questo, quando onPrepareOptionsMenu viene chiamato, il codice viene chiamato in più frammenti (di solito la corrente + successiva). Lo stesso quando viene selezionato un elemento. Questo fa sì che l'immagine sbagliata da impostare come sfondo.

Come posso evitare che il menu delle opzioni di attivazione per oltre il frammento attualmente visibile?

È stato utile?

Soluzione

La mia soluzione era quella di utilizzare il metodo setOnPageChangeListener del ViewPager al fine di tenere traccia di quali indice Fragment era attualmente visibile con la richiamata onPageSelected. Hai ancora per ottenere l'indice iniziale da soli, ma nel mio caso questo è stato banale

Altri suggerimenti

È possibile intercettare la richiamata nel menu delle opzioni onOptionsItemSelected della propria attività, e in modo esplicito chiamare l'elemento dal frammento corretto là, restituendo vero per indicare che hai gestito esso.

Il trucco è quello di cambiare sethasoptions (true | false) su ogni frammento prima di menù popolamento. Questo già mi ha aiutato

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top