Ho un'attività che mostra alcuni frammenti. La vista Attività contiene solo ViewPager inizializzato con FragmentPagerAdapter personalizzato. Questo adattatore fornisce la navigazione tra 3 frammenti.Android: Come ricreare la barra delle azioni quando il frammento è stato modificato
Tutto sembra funzionare bene tranne la barra delle azioni.
sovrascrivo metodo onCreateOptionsMenu() nei miei frammenti di creare barra di azione individuale per qualsiasi frammento:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
super.onCreateOptionsMenu(menu, inflater);
menu.clear();
//fragment specific menu creation
}
Quando faccio colpo, appare nuovo frammento, ma barra di azione rimanere lo stesso per alcuni secondi. Probabilmente dopo pochi secondi viene chiamato questo metodo e la barra delle azioni viene cambiata.
Sembra molto brutto quando la barra di azione viene modificata in un attimo dopo il passaggio del dito. Come posso ricreare immediatamente la barra delle azioni, prima dello scorrimento?
Il problema è che non ho potuto trova un modo ovvio per chiedere a Android di ricreare la barra delle azioni. –
@Mik ho aggiornato la mia risposta per aiutare ma non ti capisco completamente ... invalidateOptionsMenu() dovrebbe "chiedere a Android di ricreare la barra delle azioni" – roarster
Grazie, per la risposta, ma 1. Quando si chiama .invalidateOptionsMenu(); il sistema non ricrea davvero la barra delle azioni. Causa solo suCreateOptionsMenu() nel tuo frammento che ti permette di cambiare Menu (che è parte della barra di azione). Se hai chiamato setHasOptionsMenu (true) nel tuo frammento, non devi nemmeno chiamare invalidateOptionsMenu(), perché onCreateOptionsMenu() viene chiamato automaticamente. 2. Non ho trovato un modo per chiamare suCreateOptionsMenu() prima dello scorrimento. –