Los fragmentos ViewPager no se inician en onCreate

Parece que tengo un problema al actualizar los fragmentos que estoy utilizando en mi ViewPager, independientemente de si intento onCreate (), onCreateView (), o onResume (). Aquí es cómo estoy configurando mi ViewPager en mi MainFragment:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_main_screen, container, false); mPager = (ViewPager)rootView.findViewById(R.id.pager); mPager.setOffscreenPageLimit(2); // So all 3 pages are loaded at once. mAdapter = new JournalPagerAdapter(getActivity().getSupportFragmentManager(), this); mPager.setAdapter(mAdapter); // Add bar graph to view mGraphLayout = (LinearLayout) rootView.findViewById(R.id.journalGraph); updateGraph(); mGraphLayout.addView(mGraphView); mPainFrag = (PainFragment)mAdapter.getRegisteredFragment(0); // Null pointer here, but if I put the action in a button listener, it works. mPainFrag.setScale(mEntry.getPain()); ... 

Estoy accediendo a los fragmentos a través de algunos métodos anulados en mi FragmentPagerAdapter:

 public class JournalPagerAdapter extends FragmentPagerAdapter { SparseArray<Fragment> registeredFragments = new SparseArray<Fragment>(); private View.OnClickListener mOnClickListener; public JournalPagerAdapter(FragmentManager mgr, View.OnClickListener onClickListener) { super(mgr); mOnClickListener = onClickListener; } @Override public Fragment getItem(int pos) { switch(pos) { case 0: return PainFragment.newInstance("PainFragment", mOnClickListener); case 1: return StressFragment.newInstance("StressFragment", mOnClickListener); case 2: return SleepFragment.newInstance("SleepFragment", mOnClickListener); default: return PainFragment.newInstance("PainFragment", mOnClickListener); } } @Override public int getCount() { return 3; } /* Thanks to Streets of Boston (http://stackoverflow.com/questions/8785221/retrieve-a-fragment-from-a-viewpager) */ @Override public Object instantiateItem(ViewGroup container, int position) { Log.v("rx", "itemInstantiated"); Fragment fragment = (Fragment) super.instantiateItem(container, position); registeredFragments.put(position, fragment); return fragment; } @Override public void destroyItem(ViewGroup container, int position, Object object) { registeredFragments.remove(position); super.destroyItem(container, position, object); } public Fragment getRegisteredFragment(int position) { return registeredFragments.get(position); } 

Parece que no puedo entender por qué el fragmento es nulo justo después de configurar el adaptador, pero si pongo el fragmento de código de actualización en un evento de clic, no tengo problemas.

2 Solutions collect form web for “Los fragmentos ViewPager no se inician en onCreate”

Intento agregar un oyente de disposición a su ViewPager para ser notificado cuando se ha producido la presentación de vistas.

Cuando crea su llamada mPager.getViewTreeObserver().addOnGlobalLayoutListener() y pasar algo que implementa OnGlobalLayoutListener .

En el método de devolución de llamada, actualice su fragmento. Asegúrese de llamar a mPager.getViewTreeObserver().removeGlobalOnLayoutListener(this) en la devolución de llamada, de lo contrario la llamada de retorno se llamará varias veces.

Puede instanciar sus fragmentos en el PagerAdapter del PagerAdapter y sólo tiene getItem devolverlos en lugar de instanciarlos.

  • Android ViewPager y TabLayout no funcionan rápido
  • Hacer ViewPager rápido con la resistencia más corta
  • FragmentPagerAdapter no está trabajando en la recreación del fragmento
  • ¿Cómo puedo inhabilitar todos los eventos táctiles en todos los niños de un ViewGroup?
  • Cómo carga fragmento en ViewPager sólo cuando su seleccionado
  • ¿Cómo ocultar y mostrar correctamente la barra de acciones con la nueva API de la biblioteca de diseño?
  • ViewPager + Adaptador en Fragmento => laggy swiping
  • Trabajar con ViewPager y Fragmentos
  • Obtener Parent ViewPager Ver desde el interior Fragmento
  • Recycler view + Ver Pager + Nailed ScrollView + CoordinatorLayout
  • Uso del botón backstack y back en viewpager
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.