2012-02-01 19 views
5

Nella mia applicazione ho una attività e sto aggiungendo due frammenti in fase di esecuzione. Ho bisogno di scambiare questi due frammenti simultaneamente. Il frammento 1 consiste in un pulsante e voglio quando clicco sul frammento 1 del pulsante sul lato destro dello schermo e su un altro frammento sul lato sinistro dell'attività.Scambia simultaneamente due frammenti

Nel metodo onClick del pulsante Ho provato qualcosa di simile

@Override 
    public void onClick(View v) { 
     FragmentTransaction ft = getFragmentManager().beginTransaction(); 
     Fragment newFragment = getFragmentManager().findFragmentById(R.id.pageA); 
     ft.remove(newFragment); 
     Fragment newFragmentB = getFragmentManager().findFragmentById(R.id.pageB); 
     ft.remove(newFragmentB); 
     ft.add(R.id.pageB, newFragment); 
     ft.add(R.id.pageA, newFragmentB); 
     ft.addToBackStack(null); 
     ft.commit(); 
    } 

Ma sto ottenendo il seguente errore

java.lang.IllegalStateException: Can't change container ID of fragment PageA{40653da0 #0 id=0x7f060001}: was 2131099649 now 2131099650 

voglio qualcosa di simile quando scatto il pulsante a pagina A quindi la posizione della pagina A e la pagina B dovrebbero scambiarsi tra loro.

UI of the fragment

risposta

0

Ho un problema simile (IllegalStateException: Can't change container ID of Fragment) ei risolto scambiando i contenitori invece dei frammenti ... Tuttavia ho ancora indizio quanto a se è possibile scambiare direttamente frammenti. Come ho scritto nel post di cui sopra, sembra funzionare solo su ics!

+0

cioè, anche quello che ho trovato non funziona su nido d'ape. Non l'ho mai provato su ICS. quindi potrebbe essere un problema Android –

+0

Funziona su ICS finché rimuovi e aggiungi un frammento in due transazioni separate (dai un'occhiata al link sopra per vedere come è fatto) – Matthew

0

Ho inviato una soluzione a questo problema a una domanda simile. Il mio approccio è quello di ricreare il frammento, ma mantenendo lo stato salvandolo per primo e riapplicandolo alla nuova istanza.

Vedere https://stackoverflow.com/a/14951987/599614.

Problemi correlati