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 25/01/14, 20:00:28
Array

[xs_avatar]
Dild0 Dild0 no está en línea
Usuario muy activo
 
Fecha de registro: may 2009
Mensajes: 860
Tu operador: Pepephone

problema con fragment

buenas tengo un contenedor de fragment en el cual inflo un fragment

El problema es al girar la pantalla se recarga la activdad pero pierdo el control sobre el
Tengo una clase publica dentro de ese fragment para poder llamarla desde el activityfragment funciona la primera vez pero al girar y recargar cmo q pierde su referencia la variable.

 Cita:
public class ListadoActivity extends BaseFragmentActivity {

private ListadoFragment listado = new ListadoFragment();

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listado_container);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);

if (findViewById(R.id.fragment_container) != null) {

if (savedInstanceState != null) {
//listado = getFragmentManager().getFragment(bundle, key)

return;
}

listado.setArguments(getIntent().getExtras());
getFragmentManager().beginTransaction().add(R.id.f ragment_container, listado).commit();
getFragmentManager().saveFragmentInstanceState(lis tado);
}
}

@Override
public void onBackPressed() {

if (listado.volver())
super.onBackPressed();

}

}
listado volver() ya no me deja llamarlo porq es como si todas sus variables estuvieran vacias
__________________
Responder Con Cita


  #2  
Viejo 25/01/14, 22:37:17
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
Cada vez que se ejecuta el onCreate (en cada rotación) añades un ListadoFragment (siempre el mismo, por lo que veo) al Fragment Manager, no creo que eso sea recomendable. En lugar de .add yo usaría .replace. No sé si eso arreglaría el problema, pero creo que es aconsejable.

Un saludo.
Responder Con Cita
  #3  
Viejo 25/01/14, 23:43:33
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Creo que deben ser Fragments distintos, si no daría error al hacer el "add", te diría que ya existe en un contexto.

Es un error raro, te digo lo que hago yo y me funciona bien (te lo pongo con mis datos, es copy&paste de un fragmento de mi código)

En el onCreate():

if (savedInstanceState==null)
fragment = new CrearPlanFragment();
else
fragment = (CrearPlanFragment) getSupportFragmentManager().getFragment(savedInsta nceState, "crearplanfragment");
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment, fragment);
ft.commit();

El código del onSaveInstanceState():

@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);

getSupportFragmentManager().putFragment(outState, "crearplanfragment", fragment);
}
Responder Con Cita
  #4  
Viejo 25/01/14, 23:58:32
Array

[xs_avatar]
Dild0 Dild0 no está en línea
Usuario muy activo
 
Fecha de registro: may 2009
Mensajes: 860
Tu operador: Pepephone

Buenas

Ahora no puedo probar tu codigo kriogen

En cuando a cambiar add por replace puse trazas, lo hice y cierto q ya no me añade un nuevo fragment pero tengo 2 o al menos eso me indican las trazas, cada rotacion hace 2 veces con el add añade una mas a las que ya hay, mañana os comento

Gracias por la ayuda makinas
__________________
Responder Con Cita
Respuesta

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



Hora actual: 23:40:49 (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 / 邮件联系 /