Ho problemi a ottenere onPrepareOptionsMenu()
per funzionare correttamente. Non importa cosa cerco, non riesco a farmi chiamare.onPrepareOptionsMenu non si chiama
L'architettura della mia applicazione è la seguente: la mia attività principale contiene un frammento che contiene un ViewPager, che a sua volta ha quattro istanze Fragment figlio. Attualmente sto compilando (con successo) il menu delle opzioni iniziali nell'attività con onCreateOptionsMenu()
, ma desidero aggiungere alcune opzioni aggiuntive corrispondenti a ciascun frammento figlio attivo.
nel mio Frammenti bambino, ho fatto in modo che setHasOptionsMenu(true)
viene chiamato in onCreate()
e che è chiamato a onActivityCreated()
. Nell'attività principale, onCreateOptionsMenu()
viene chiamato una volta dopo l'istanziazione dei frammenti figlio, indipendentemente dal fatto che contengano o meno supportInvalidateOptionsMenu()
. Successivamente viene richiamato ogni volta che viene sostituito il frammento nel cercapersone.
Ho provato a spostare il codice onPrepareOptionsMenu()
su un livello per il frammento principale e per l'attività principale - senza alcun risultato, il che suggerisce che il problema non è correlato al mio utilizzo di frammenti nidificati. Ho anche provato a spostare il metodo onCreateOptionsMenu()
in giù dall'attività principale su entrambi i frammenti, dove non è richiesto.
Se qualcuno ha qualche idea su cosa sta succedendo qui, sarei molto grato, poiché sono rimasto bloccato su questo per due giorni.
AGGIORNAMENTO - Ho risolto esattamente qual è il problema ora, solo che non sono ancora sicuro su come risolverlo. Sto testando su 4.2 e sembra che onCreateOptionsMenu()
venga chiamato dopo onResume()
nell'attività - come visto in onCreateOptionsMenu called after onResume on JB 4.2. Presumo questo significa che i frammenti non possono chiamare onPrepareOptionsMenu()
perché il menu non esiste nemmeno fino a quando non vengono istanziati. Quindi come posso risolvere questo?
mi hai salvato una giornata di lavoro, mi hai sbattuto la testa a questo – slinden77
@dmmh Hai trovato la soluzione giusta per quel problema ?? –
è nel mio commento :) – slinden77