Estoy usando un ViewPager
con un PagerFragmentAdapter
personalizado que usa una lista interna para proporcionar fragmentos. Me gustaría agregar y eliminar fragmentos dinámicamente en los cambios de configuración.Agregar y eliminar fragmentos dinámicamente en ViewPager
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_pager);
mAdapter = new ServicePagerAdapter(getSupportFragmentManager());
mPager = (ViewPager) findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
}
He tratado de llamar de nuevo la setAdapter
pero obtener una IllegalStateException (Can not perform this action after onSaveInstanceState)
.
¿Cómo puedo lograr mi objetivo?
Desafortunadamente no es tan fácil. FragmentPagerAdapter almacena en caché Fragmentos, debe crear un PagerAdapter personalizado o utilizar algunos trucos. – Matroska
en su muestra de código usted menciona 'ServicePagerAdapter' - esta no es una clase de biblioteca, por lo que asumí que ya usa un adaptador personalizado. Entonces, sí, necesitas una implementación personalizada de la clase 'PagerAdapter'. En cuanto a su pregunta principal, creo que fue respondida. – HitOdessit
No es suficiente llamar a notifyDataSetChanged() en el PagerAdapter si se han eliminado elementos. También debe sobrescribir el método getItemPosition del PagerAdapter. Devuelve POSITION_UNCHANGED si el elemento aún está allí, o POSITION_NONE si se ha eliminado. –