Ecco cosa vorrei fare la mia applicazione su un tablet. Fragment (0) ha alcuni menu che visualizzerebbe frammenti (1) ... (n) come questo:sposta il frammento Android in un contenitore diverso Impossibile modificare l'ID contenitore del frammento
-----------------
| | | | |
| | | | |
|(0)| X | X | X |
| | | | |
| | | | |
-----------------
becomes
-----------------
| | | | |
| | | | |
|(0)|(1)| X | X |
| | | | |
| | | | |
-----------------
and then
-----------------
| | | | |
| | | | |
|(0)|(2)|(1)| X |
| | | | |
| | | | |
-----------------
etc...
Fragment0 non si muove, gli altri vengono spostati a destra. Frammenti che vanno dal bordo a destra saranno distrutti.
Così ho configurato il mio layout XML con un LinearLayout orizzontale e contenente 4 FrameLayout con le dovute ID (fragment0 ... fragment3)
posso un'istanza e visualizzazione fragment0 e poi fragment1, ma io non sono in grado di spostare a destra dopo, ottengo:
ERROR/AndroidRuntime(343): FATAL EXCEPTION: main
java.lang.IllegalStateException: Can't change container ID of fragment ...
le sole questioni connesse che ho trovato sono this one e that one, ha provato tutte le diverse soluzioni offerte senza fortuna.
Provato FragmentTransaction.remove()
seguito da .add()
, provato .replace()
, li provato in diversi ordini e di impegnarsi a metà (anche cercando di commettere due volte come qualcuno ha suggerito), ha cercato di chiamare addToBackStack()
... ancora senza fortuna.
Domanda è se è possibile spostare i frammenti come questo con FragmentTransaction. Se sì, cosa sto sbagliando (e bonus, è possibile animarlo?). Se no, quale sarebbe il modo corretto di implementarlo?
Nota che non voglio ripetere l'istanza dei frammenti ogni volta (ognuno fa alcune query sul web che possono richiedere del tempo). È possibile estrarre tutti i dati di nuovo all'attività per ricrearne uno, ma preferirei non farlo se possibile ...
Non fa quello che sto cercando, ma sto cercando di cambiare il tuo codice per farlo ... Lo posterò se riesco a ... – Matthieu
È stato in grado di fare ciò di cui avevo bisogno .. Non riuscivo a capire come spingere le mie modifiche alla sostanza che hai creato, quindi l'ho messo lì: https://gist.github.com/4166640 – Matthieu
Scusami. È un refuso, che dovrebbe essere 'LinearLayout' invece di' RelativeLayout' in 'frag_fragaccordion.xml'? – midnite