FragmentPagerAdapter con ViewPager y dos fragmentos. Ir al primero del segundo y actualizar el primer texto.
No estoy familiarizado conFragmentPagerAdapter
, por lo que esta será una de esas preguntas en las que nosotros (usted) lea la descripción de manera crítica.
Estructura: tengo unFragmentPagerAdapter
(código abajo), que contendrá dos fragmentos a la vez. El primero muestra extractos de libros, y el segundo una lista de títulos de libros.
Gol: Quiero lograr lo que se describe en el título: el usuario puede navegar al segundo fragmento en el buscapersonas, hacer clic en un título, y luego quiero mover al usuario de nuevo al primer fragmento y decirle al primer fragmento que actualice el texto. . El primer fragmento tiene unatriggerRefresh
método para eso
Código: Creo que mi problema pasa por el camino.FragmentPagerAdapter
reutiliza / crea los Fragmentos (que no entiendo). Esta es mi clase:
<code>static class MyFragmentPagerAdapter extends FragmentPagerAdapter { public MyFragmentPagerAdapter(FragmentManager fm) { super(fm); } @Override public int getCount() { return NUM_ITEMS; } @Override public Fragment getItem(int position) { switch(position) { case 0: return new ExcerptsFragment(); case 1: return new BookListFragment(); default: throw new IllegalArgumentException("not this many fragments: " + position); } } } </code>
Así es como creé a los miembros relevantes:
<code>ViewPager mViewPager = (ViewPager) findViewById(R.id.pager); MyFragmentPagerAdapter mFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager()); mViewPager.setAdapter(mFragmentPagerAdapter); </code>
Y esto es lo que he intentado en otra parte de mi actividad, cuando recibo la devolución de llamada de los títulos de libro Fragmento con el título seleccionado:
<code>mViewPager.setCurrentItem(0); // back to excerpts screen page. It's OK. // Here's the problem! How to identify the fragment 0 // to ExcerptsFragment and call its triggerRefresh()?!? </code>
Serie de problemas:
Llamando al adaptadorgetView()
no funcionará porque devolverá una nueva instancia deExcerptsFragment
, que no es el que se adjunta actualmente (como se esperaba, lanza la excepción).
He visto a muchas personas aquí (ejemplo) simplemente almacenando fragmentos en elgetView()
. ¿Está bien? Porque al mirar los ejemplos oficiales, me parece un antipatrón (anule la referencia automática sosteniendo los elementos). Y esa es también la opinión.aquí yaquí (y me queda bien).
¿Alguna sugerencia? No me sorprendería si no entiendo todo esto un poco ...