¿Cuál es el papel de "isViewFromObject (View view, Object object)" en FragmentStatePagerAdapter?
Estoy usando un FragmentStatePagerAdapter
con mi View Pager. El Fragmento devuelto no se muestra en la pantalla si isViewFromObject (View view, Object object)
devuelve false
. ¿Porqué es eso?
El programador doc dice Determines whether a page View is associated with a specific key object as returned by instantiateItem(ViewGroup, int). This method is required for a PagerAdapter to function properly.
Determines whether a page View is associated with a specific key object as returned by instantiateItem(ViewGroup, int). This method is required for a PagerAdapter to function properly.
Pero no estoy claro con esta definición.
- BottomSheet con ViewPager y fragmentos?
- Retener el estado de fragmentos de viewpager android
- ¿Cómo agregar margen entre EditText y Soft Keyboard?
- Los fragmentos ViewPager no se inician en onCreate
- ViewPager ¿Fragmentos que se destruyen con el tiempo?
- Los fragmentos de ViewPager desaparecen al cambiar la rotación de la pantalla
- ¿Por qué no es posible usar ViewPager dentro de un Fragmento? En realidad es
- Indicador ViewPager con ListView personalizado
- Viewpager setonpagechangelistener obsoleto
- FragmentPagerAdapter actualización de título dinámicamente
- Adición dinámica y eliminación de pestañas en TabLayout (diseño de material) android
- Actividad del botón con viewPager?
- Fragmentos de Viewpager no se muestran después de la primera vez
El método instantiateItem(ViewGroup, int)
devuelve Object
para una vista en particular. PagerAdapter
implementación de PagerAdapter
considera este Object
como un valor de key
cuando viewpager cambia una página.
Por lo tanto, si devolvemos la vista desde instantiateItem(ViewGroup, int)
, entonces nuestra key
para esa página se convierte en la vista misma. Podemos comprobar la return view == object;
Desde isViewFromObject (View view, Object object)
que siempre devolverá true
y nuestras páginas mostrarán:
public boolean isViewFromObject(View view, Object object) { return view == object; }
Más información sobre el post https://stackoverflow.com/a/16772250/1994950 :
Cuando desliza ViewPager
obtiene la posición de la vista desde la matriz o la ejemplifica y compara esta vista con los niños de ViewPager
con el método de los adaptadores public boolean isViewFromObject(View view, Object object)
. Ver que es igual a objeto se muestra al usuario en ViewPager
. Si no hay ninguna vista, se mostrará la pantalla en blanco.
Aquí está el método ViewPager
donde se compara la vista con el objeto:
ItemInfo infoForChild(View child) { for (int i=0; i<mItems.size(); i++) { ItemInfo ii = mItems.get(i); if (mAdapter.isViewFromObject(child, ii.object)) { return ii; } } return null; }
- ¿Cómo puedo obtener el contexto de la aplicación de un servicio de Android?
- Compartir Bitmap () en android para twitter, facebook, correo