Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Evitar que ViewPager destruya vistas fuera de pantalla

Tengo un ViewPager conectado a un FragmentPagerAdapter que está exhibiendo tres fragmentos. El ViewPager parece destruir la vista de un fragmento alojado cuando está a más de un golpe de la posición actual.

Estas vistas son listas simples y esta optimización es completamente innecesaria, por lo que me gustaría desactivarla. Está causando algunos problemas visuales porque las listas tienen animaciones de diseño aplicadas a ellos y esas animaciones se reproducen después de haber sido destruidas y recreadas. También muestra la animación de introducción de la barra de desplazamiento cada vez (donde la barra de desplazamiento está brevemente visible para indicar que es posible desplazarse) lo que puede distraer, y la posición de desplazamiento actual del usuario se pierde en el proceso.

  • Monte imágenes del emulador de Android
  • ¿Cómo puedo habilitar USB Tethering mediante programación en un dispositivo Android 4.0?
  • Utilizar windowTranslucentStatus con CollapsingToolbarLayout
  • ¿Dónde puedo descargar Eclipse Android Bundle
  • ¿Cuánto tiempo persisten los paquetes de SyncManager?
  • Iptables en android
  • Tampoco carga el tercer fragmento hasta que ocurre el primer golpe, lo cual es problemático porque cada fragmento maneja sus propias llamadas de servicio y prefiero tener todos los tres disparos al mismo tiempo cuando se carga la actividad. Tener la tercera llamada de servicio retrasada es menos que ideal.

    ¿Hay alguna manera de convencer a ViewPager para detener este comportamiento y sólo mantener todos mis fragmentos en la memoria?

  • Opciones de botón de acción flotante de Android
  • La búsqueda global no funciona como se esperaba en Android 4.4
  • Android EditText AutoFocus al próximo EditText cuando está en maxlength
  • Cambiar de idioma mediante programación en un dispositivo Android
  • ¿Cómo ahorrar mejor el estado de compra de InApp localmente?
  • Forzar a los usuarios a tener la última versión de la aplicación para Android
  • 3 Solutions collect form web for “Evitar que ViewPager destruya vistas fuera de pantalla”

    En la revisión 4 del Paquete de soporte, se agregó un método a ViewPager que le permite especificar el número de páginas sin pantalla que desea usar, en lugar del valor predeterminado que es 1.

    En su caso, desea especificar 2, de modo que cuando esté en la tercera página, el primero no se destruya, y viceversa.

    mViewPager = (ViewPager)findViewById(R.id.pager); mViewPager.setOffscreenPageLimit(2); 

    "Establezca el número de páginas que se deben conservar a cada lado de la página actual en la jerarquía de vistas en un estado inactivo. Las páginas más allá de este límite se volverán a crear desde el adaptador cuando sea necesario."

    http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit(int)

    De forma predeterminada, ViewPager recrea los fragmentos cuando desliza la página. Para evitar esto, puede probar una de dos cosas:

    1. En el onCreate () de sus fragmentos, llame a setRetainInstance (true).

    2. Si el número de fragmentos es fijo y relativamente pequeño, entonces en su onCreate () agregue el código siguiente:

     ViewPager mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setOffscreenPageLimit(3); 

    Si recuerdo bien, la segunda opción es más prometedora. Pero le insto a que pruebe ambos y vea cuál de ellos funciona.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.