Questa è una vecchia questione, ma in ogni caso ecco alcune informazioni nella speranza che possa aiutare qualcuno.
ViewPager funziona insieme all'adattatore impostato tramite ViewPager # setAdapter(). Nel caso di questa domanda, sembra che FragmentPagerAdapter sia usato come un adattatore (dato che questo adattatore chiama i frammenti android: switcher: [x]: [y] come appare nell'eccezione).
Un importante osservazione sul FragmentPagerAdapter è questo:
FragmentPagerAdapter possiede i frammenti assegnati che vengono utilizzati nel ViewPager.
L'uso di ViewPager con congiunzione di ViewPagerAdapter deve definire una sottoclasse di FragmentPagerAdapter attuazione del metodo getItem(), prototipo come segue:
public abstract Fragment getItem(int position);
Questa funzione crea i diversi frammenti utilizzati dalla ViewPager come pagine . L'implementazione di questo metodo dovrebbe essere considerata come un servizio fornito dalla sottoclasse a FragmentPagerAdapter() per l'allocazione dei frammenti.
In altre parole, sebbene la sottoclasse allochi i frammenti non ne è il proprietario.
Poiché, come detto sopra, il proprietario dei frammenti è FragmentPagerAdapter, tutte le operazioni sui frammenti (nel senso di FragmentManager/FragmentTransaction) devono essere eseguite solo da FragmentPagerAdapter.
Provare a eseguire operazioni su questi frammenti può interferire con il normale funzionamento di ViewPager e causare un comportamento indefinito.
Nel caso di questa domanda, vi è un tentativo di rimuovere uno dei frammenti utilizzati dal ViewPager al di fuori di FragmentPagerAdapter che, come spiegato, è errato e probabilmente ha attivato una sequenza terminata con questa eccezione.
Quando è necessario rimuovere/aggiungere/sostituire dinamicamente le pagine in un ViewPager, il modo per farlo è chiamare notifyDataSetChanged() sull'adattatore.
Buona fortuna!
possibile duplicato di [Android: impossibile sostituire un frammento con un altro] (http://stackoverflow.com/questions/5907673/android-cant-replace-one-fragment-with-another) – bernie
La traccia di eccezioni potrebbe aiutare . La stessa cosa mi sta succedendo, non sulla rimozione, però, su ViewPager.setCurrentItem (int). –
Cosa intendi per rimuovere il frammento da ViewPager. ViewPager gestisce la vita di Fragment.Devi rimuovere elementi come quelli che dovresti rimuovere in una listview, usando i metodi dell'adattatore. Puoi chiarire per favore? –