2012-12-09 13 views
15

sto implementando la nuova funzione di frammento nidificato e ho inciampato in un problema. mio punto di vista è fondamentalmente questo: attività principale (A) che include un frammento (B), questo frammento (B) include un adattatore cercapersone che ha 3 pagine ciascuno di loro è un frammento (C) anche. in precedenza per il nuovo getchildfragmentmanger questo non era fattibile, ma funziona perfettamente. ma un problema è sorto, voglio che i frammenti C possano partecipare alla compilazione del menu delle opzioni. mi stanco mettendo setHasOptionsMenu (vero) nel metodo onActivityCreated su ciascuno dei miei C frammenti e prioritario anche onCreateOptionsMenu ma non succede nulla ... se provo a popolare il menu dal frammento B (che è il contenitore del adattatore pager) posso cambiare le voci del menu ...Android - NestedFragments partecipa alla compilazione del menu delle opzioni

qualche idea?

Grazie.

risposta

11

Dalla mia lettura del codice sorgente, sembra che le implementazioni di FragmentManager e Activity funzionano solo con la radice FragmentManager per aggiungere alla barra dei menu Opzioni/azione, non e bambino FragmentManager istanze.

Il frammento B presumibilmente dovrà gestire il menu delle opzioni/barra delle azioni per conto del contenuto dello ViewPager, modificando ciò che è nel menu opzioni/barra delle azioni in base alle pagine mostrate e nascoste nel cercapersone.

+0

hi CommonsWare, grazie per la riproduzione veloce, questo è quello che ho finito per fare, ma speravo in una soluzione più incapsulato. – senior

+0

Sì .. !! Sono rimasto bloccato anche su questo problema .. e ho fatto quello che ha detto Mark Murphy .. Grazie mark –

+0

posso sapere come funziona la tua soluzione? Ho provato tutto ed è ancora incasinato .. – Zyoo

16

Sì, possono.

Con Android 4.2 o revisione della libreria di supporto 11 frammenti nidificati partecipano al menu delle opzioni di popolamento, come sempre è necessario chiamare setHasOptionsMenu(true) durante onCreate().

Ma se si utilizza ActionBarSherlock non lo faranno, è necessario chiamare manualmente dal frammento parent onCreateOptionsMenu() metodo frammento nidificato onCreateOptionsMenu().

Aggiornamento: issue

+0

Ne sei sicuro? Sto usando ActionBarSherlock ma per quanto ne so l'ABS utilizza solo ActionBar normale quando il dispositivo è sopra ICS. Sto usando frammenti annidati e supporto alla revisione 11 ma il menu non è stato creato. – tasomaniac

+0

@tasomaniac Sì, sono sicuro. E puoi sempre guardare nella fonte di ABS e Android, come ho fatto io. Il problema non è nella barra delle azioni, problema nel modo in cui l'ABS gestisce le chiamate a onCreateOptionsPanel() da FragmentActivity ai frammenti e non ai frammenti nidificati. – kreker

+0

Stai dicendo che se non utilizzo ActionBarSherlock e lo compilo con Android 4.0 e utilizzo la libreria di supporto, posso usare onCreateOptionsMenu in frammenti nidificati? – tasomaniac

Problemi correlati