FragmentPagerAdapter notifyDataSetChanged no funciona

Tengo un FragmentPagerAdapter. Es método getItem puede devolver un fragmento de acuerdo a los datos que tiene desde el exterior. Después de actualizar los datos su supongo que para mostrar llamo notifyDataSetChanged y nada sucedió. HICE getItemPosition método getItemPosition para devolver POSITION_NONE :

 public static class TabsAdapter extends FragmentPagerAdapter implements TabHost.OnTabChangeListener, ViewPager.OnPageChangeListener { private final Context mContext; private final TabHost mTabHost; private final ViewPager mViewPager; private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>(); private PagerTabsFragments fragmentDisplayInfo = null; // for now only a // single size // back // stack static class PagerTabsFragments { public int tabPosition; public Fragment fragmentToDisplay; public Object fragmentInfo; public PagerTabsFragments(int tab, Fragment frag, Object info) { tabPosition = tab; fragmentToDisplay = frag; fragmentInfo = info; } } public void SetFragmentToDisplay(int tabPosition, Fragment frag, Object info) { fragmentDisplayInfo = new PagerTabsFragments(tabPosition, frag, info); notifyDataSetChanged(); } public void CancelFragmentToDisplay() { fragmentDisplayInfo = null; } ... @Override public Fragment getItem(final int position) { if ((fragmentDisplayInfo != null) && (fragmentDisplayInfo.tabPosition == position)) { return fragmentDisplayInfo.fragmentToDisplay; } final TabInfo info = mTabs.get(position); return Fragment.instantiate(mContext, info.clss.getName(), info.args); } @Override public int getItemPosition(Object item) { if (fragmentDisplayInfo == null) { return super.getItemPosition(item); } return POSITION_NONE; } ... 

Y la actualización desde fuera está en un evento de clic que establece el fragmentDisplayInfo var. Debuged y vi que el fragmentDisplayInfo es de hecho inicializado y el método getItemPosition devuelve POSITION_NONE , pero el método getItem ni siquiera se llama. ¿Porqué es eso?

No estoy seguro acerca de esto, pero puede intentar utilizar FragmentStatePagerAdapter lugar de FragmentPagerAdapter . La cosa es, yo también he encontrado este problema, y ​​me ayudó

Lo que Nik Myers está diciendo es correcto. Sin embargo, falta una pieza. Cuando se llama notifyDataSetChanged, se llama al método getItemPosition. Debe anular esta opción para que los fragmentos se vuelvan a cargar.

  @Override public int getItemPosition(Object object) { // Causes adapter to reload all Fragments when // notifyDataSetChanged is called return POSITION_NONE; } 
  • RecyclerViewAdapter.notifyDataSetChanged () en una referencia de objeto nulo
  • NotifyDataSetChange no funciona desde un adaptador personalizado
  • ¿Por qué no necesito usar Adapter.notifyDataSetChanged ()?
  • Actualizar Android ListView
  • ¿Por qué no "notifyDatasetChanged ()" notifica todos los elementos visibles?
  • Android ListView no se actualiza después de notifyDataSetChanged
  • Android ParseQueryAdapter notifyDataSetChanged no funciona
  • Mantener el foco en TextView después de notifyDatasetChanged () fue llamado en listview personalizado?
  • Cómo proporcionar animación personalizada durante la clasificación (notifyDataSetChanged) en RecyclerView
  • Cómo añadir sugerencias dinámicamente a autocompletetextview con preservar el estado de los caracteres
  • Cómo utilizar ListView, ArrayList, ArrayAdapter y notifyDataSetChanged junto con un runnable, y un Handler de mensaje en el hilo principal
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.