2012-01-02 10 views
7

Ho un'applicazione titoli frammento e contenuto frammento sullo schermo. Quando l'utente fa clic sull'elemento nel frammento dei titoli, il frammento corrispondente viene creato e inserito in una cornice e il titolo selezionato viene evidenziato nel frammento dei titoli.Come ripristinare lo stato di visualizzazione del frammento Android

La transazione viene eseguita con fragment.addToBackStack(), quindi quando l'utente fa clic sulla chiave BACK, il frammento precedente viene ripristinato e inserito nella cornice.

Qual è la soluzione migliore per ripristinare lo stato di visualizzazione quando il gestore transazioni ripristina i frammenti?

Il problema è che dovrei evidenziare il nome del frammento precedente nel frammento dei titoli e dovrei sapere quale frammento è. Ho risolto il problema memorizzando lo stato di visualizzazione nel mio stack: quando si crea un frammento e si ripristina cambiando il backstack della transazione utilizzando il listener del gestore delle transazioni.

Ma questa non sembra la soluzione corretta.

risposta

1

Prima della risposta, la prossima volta ricordati di aggiungere il tuo codice. È probabile che la mia risposta non ti aiuti quanto potrebbe perché non conosco il tuo codice.

Questo è vecchio ma comunque, SE capisco correttamente la tua domanda (e l'architettura dell'app), sembra un caso per l'interfaccia.

Esempio:

aggiungere questa interfaccia come membro al frammento di contenuto:

public class ContentFragment extends Fragment{ 

    public interface onFragmentTitleHighlighted{ 
     public void highLightTitle(String title); 
    } 
} 

e hanno il frammento titolo realizzarlo. Assicurati di equipaggiare i frammenti di contenuto con il titolo fragmnet e aggiungi una chiamata a highLightTitle(String title); nella chiamata onCreateView (...) del frammento di contenuto. In questo modo ogni volta che viene aggiunto un nuovo contenuto fragmnet, il titolo verrà evidenziato.

Problemi correlati