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.

  • ViewPager + Adaptador en Fragmento => laggy swiping
  • Ver buscapersonas con cargador de imágenes universal sin error de memoria
  • Actualizar ViewPager dinámicamente?
  • ViewPager con múltiples PageTransformer (PageTransformers en Runtime)
  • Pestañas deslizantes dentro de las pestañas de la barra de acciones
  • Android: Viewpager dentro de un fragmento del cajón de navegación
  • Android ViewPager no llama a onDetach / onDestroy / onDestroyView para cuando se sustituye en un contenedor
  • "La actividad ha sido destruida" a veces cuando se puebla viewpager con fragmentos
  • Android: Debería agregar un constructor vacío a un fragmento utilizado en ViewPager
  • Android - combinar viewpager horizontal con viewpager vertical
  • Evitar que ViewPager destruya vistas fuera de pantalla
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.