Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 31/10/12, 22:22:37
Array

[xs_avatar]
Arasthel Arasthel no está en línea
Cocinero veterano
· Votos compra/venta: (1)
 
Fecha de registro: jun 2009
Localización: Almería
Mensajes: 1,946
Modelo de smartphone: Nexus 5
Tu operador: Amena
Problema con ViewPager y re-creación de la actividad

Muy buenas, llevo un día entero dándole vueltas al problema, probando numerosas soluciones y hasta ahora no he sacado nada en claro.

En una actividad tengo un ViewPager que contiene un número variable de Fragments del mismo tipo que se crean en tiempo de ejecución y uno de otro tipo. La actividad suele funcionar bien, hasta que el sistema se queda sin memoria y mata a la aplicación. Cuando esto ocurre y vuelvo a iniciar la app volviendo a crear el ViewPager y los fragments, varios de ellos (los instanciados por el ViewPager cuando la app se cerró) me aparecen "desvinculados" de mi actividad (getActivity() = null) siempre y cuando estos no se instanciaran por primera vez en esta ocasión.

Lo pongo más esquemático:
  1. La app se instancia por primera vez, carga algunos fragments del ViewPager
  2. El sistema se queda sin memoria y mata mi app
  3. Abro la app de nuevo y aunque todo se debería de crear de 0, en algunos fragments del ViewPager, "getActivity()" es null. Casualmente, estos fragments son los que se instanciaron la primera vez.

¿Alguien que haya trabajado ya con esto puede decirme qué hacer? Por lo que he leído, podría ser que el SupportFragmentManager guardase en memoria automáticamente mis fragments y luego los cargase, y de ahí que los fragments estén vinculados al Activity antiguo y por ello su getActivity() es null, ¿pero qué solución tiene esto?

Copio mi ViewPagerAdapter:

Código:
public class ViewPagerAdapter extends FragmentPagerAdapter{

	private SparseArray<Fragment> fragments = new SparseArray<Fragment>();
	private Context context;
	
	public ViewPagerAdapter(Context context) {
		super(((FragmentActivity) context).getSupportFragmentManager());
		this.context = context;
	}

	@Override
	public Fragment getItem(int arg0) {
		return fragments.get(arg0);
	}

	@Override
	public int getCount() {
		return fragments.size();
	}

	public SparseArray<Fragment> getFragments() {
		return fragments;
	}

	public void setFragments(ArrayList<Fragment> fragments) {
		for(int i = 0; i < fragments.size(); i++){
			this.fragments.put(i, fragments.get(i));
		}
		notifyDataSetChanged();
	}
	
}
Un saludo y gracias.

Última edición por Arasthel Día 31/10/12 a las 22:24:41.
Responder Con Cita


Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 10:42:46 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /