Tengo una aplicación con un ViewPager que contiene dos fragmentos: un fragmento principal y un fragmento de lista. Si se selecciona algo en la lista, se genera un evento que se maneja en la actividad. La actividad cambia al fragmento principal y llama al método "setSelectedItem". En este método, utilizo getView() para encontrar una vista específica para cambiar el texto de acuerdo con el elemento seleccionado.getView en fragmentos devuelve a veces nulo
La mayoría de las veces funciona, pero a veces getView devuelve nulo y no sé por qué.
El pagerAdapter se crea en OnCreate de la actividad:
this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager());
ViewPager pager = (ViewPager)super.findViewById(R.id.viewpager);
pager.setAdapter(this.mPagerAdapter);
El adaptador localizador crea instancias de ambos fragmentos en su constructor:
public PagerAdapter(FragmentManager fm) {
super(fm);
this.main = MainFragment.newInstance();
this.list = ListFragment.newInstance();
}
Este es el método en la actividad que se llama cuando se selecciona un elemento de la lista:
ViewPager pager = (ViewPager)super.findViewById(R.id.viewpager);
pager.setCurrentItem(0, true);
((MainFragment)mPagerAdapter.getItem(0)).setSelectedItem(id);
Y finalmente th es la línea está en el método setSelectedItem en el MainFragment que causa el problema:
TextView s = (TextView)getView().findViewById(R.id.CurrentSelection);
He intentado varias cosas que leí sobre pero el problema se sigue produciendo de forma irregular.
Desafortunadamente tengo el mismo problema y no tengo ninguna resolución. Mi código está lleno de if (getView() == null) return; en varios lugares. Si ya has resuelto el problema, me interesaría. – StackOverflowed
¿Puedes compartir el código donde agregas el fragmento al administrador de fragmentos? Es posible que getView devuelva nulo si onCreateView (parte del ciclo de vida del fragmento) no se ha llamado para el fragmento, es decir, el fragmento no se ha agregado completamente a la actividad. – PacificSky
¿A dónde llamas "TextView s"? ¿Esto es público View getView en el fragmento? –