Ho tre frammenti come mostrato nella figura seguente. Ho aggiunto tutti questi tre frammenti in LinearLayout usando il file .xml e quando inizia la mia attività di avvio, carico il layout .xml utilizzando setContentView.
Ho alcuni controlli su fragment2. Cliccando su ognuno si carica il frammento a livello di codice usando FragmentTransaction e il metodo commit. Questi frammenti vengono aggiunti allo schermo ma il problema è frammentato in modo prrammaticamente4 occupano l'intera area dello schermo. Quale può essere il problema?
Nota: su qualsiasi elemento fare clic su f2 Voglio sostituire solo f2 con il nuovo frammento f4. Tieni presente che ho aggiunto f1, f2, f3 al file di layout xml e aggiungendo il nuovo frammento f4 a livello di codice.
Sostituire un frammento a livello di codice
risposta
È sempre necessario aggiungere, rimuovere e sostituire i frammenti in modo programmatico. Pertanto suggerisco di sostituire i frammenti F-1, F-2 e F-3 con contenitori come FrameLayout.
Fondamentalmente invece di avere un elemento <fragment/>
come F-1, lo si rende un elemento <FrameLayout/>
. Poi si esegue una transazione frammento onCreate del FragmentActivity:
Fragment1 f1 = new Fragment1();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.f1_container, f1); // f1_container is your FrameLayout container
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
Ora, supponiamo di avere fatto questo per F-1, F-2 e F-3. Quindi sostituisci f2 con f4 facendo nuovamente la stessa cosa nel tuo OnClickListener
:
public void onClick(View v) {
Fragment4 f4 = new Fragment4();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.f2_container, f4); // f2_container is your FrameLayout container
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
}
Hai qualche riferimento in modo che io possa fare un esempio da lì? – MobiDev
Ho modificato la mia risposta. Questo dovrebbe sove il tuo problema. – CodePrimate
Grazie. OK quello che capisco è non mettere i frammenti direttamente nel layout xml. Metti framelayouts al posto degli elementi del frammento. E mentre sostituisci f4 con f2 usa il frame di f2. Ho ragione? Puoi dare un sito di riferimento per verificarlo. – MobiDev
Mantiene solo FrameLayout come segnaposti per il frammento nell'XML. Nell'OnCreate carica i frammenti nel framelayout. OnClick del frammento, assegna a quel particolare FrameLayout l'id da sostituire con Fragment4.
- 1. Aggiunta di pulsanti a livello di codice a un frammento
- 2. UIStoryboard come sostituire i vincoli a livello di codice?
- 3. Sostituire frammento con un altro frammento all'interno ViewPager
- 4. Come sostituire un ViewPager con un frammento
- 5. Come sostituire a livello di codice un HyperLinkField in un GridView ASP.NET
- 6. Come aggiungere i vincoli a livello di codice a un UIView creato a livello di codice?
- 7. creare a livello di codice un UILabel
- 8. Come sostituire un frammento con un altro frammento usando l'ascoltatore nel primo frammento
- 9. Scorrimento a livello di codice
- 10. Ottieni codice identificativo a livello di codice
- 11. Aggiungi modello di codice Java a livello di codice
- 12. aggiunta di UITableView a livello di codice a un UIViewController
- 13. javascript sostituire a livello globale con serie
- 14. Come trovare un frammento di codice simile?
- 15. Sostituire le immagini del selettore a livello di programmazione
- 16. Sostituire ViewPager con frammento - Quindi spostarsi indietro
- 17. Sostituire un frammento con se stesso non mostra nulla
- 18. Creazione di Imagebutton a livello di codice
- 19. Come sostituire a livello di codice oggetti UIToolBar costruiti in IB
- 20. Impostazione di un lato di NSSplitView a livello di codice
- 21. Modificare un tipo di carattere a livello di codice
- 22. Distribuzione di un servlet a livello di codice con Jetty
- 23. Come chiamare un controller di visualizzazione a livello di codice?
- 24. Erlang: avvio di un nodo remoto a livello di codice
- 25. login di un utente a livello di codice tramite JAAS
- 26. Come incrementare un numero di versione a livello di codice?
- 27. Creazione di un UISearchDisplayController a livello di codice
- 28. Caricamento a livello di codice di un file
- 29. Esempio di codice per creare pdf a livello di codice
- 30. modifica NSSlider Valore a livello di codice
Non è chiaro. Alla fine stai mostrando tutti e quattro i frammenti? –