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 29/11/14, 02:12:45
Array

[xs_avatar]
fernandinho_90 fernandinho_90 no está en línea
Miembro del foro
 
Fecha de registro: sep 2014
Mensajes: 32
Tu operador: Movistar

Desaparecen datos ingresados cuando cambio orientación

Hola de nuevo,

disculpen que los vuelva a molestar, pero tengo la siguiente duda. Tengo un listview expandable dentro de un fragment y éste fragment dentro de un FragmentActiviy. La pregunta es si es posible que cuando se cambie la orientación del celular, por ejemplo, de estar vertical pasar a horizontal los datos ingresados en el listview no se borren y sigan apareciendo? Lo que ocurre ahora es que la información ingresada en editText que están al interior (child) del listview expandable desaparece al cambiar la orientación del celular.

Como decía mi Activity principal extiende a FragmentActivity, en el cual se usa un Navigation Drawer y mediante un adaptador, cuando se presiona un item específico se muestra un Fragment determinado, y éste mediante un adaptador que implementa a ExpandableListAdapter donde uno de sus "ChildView" tiene edittext que me están ocasionando el problema mencionado anteriormente.

Si me pudiesen ayudar se los agradecería. Saludos!
Responder Con Cita


  #2  
Viejo 01/12/14, 12:26:18
Array

[xs_avatar]
adndroide adndroide no está en línea
Usuario novato en la web
 
Fecha de registro: nov 2014
Mensajes: 5
Modelo de smartphone: Nexus 4
Tu operador: Movistar
Hola.
Cuando el movil gira se llama a la función onStop.Lo que tienes que hacer es guardar el contenido de los edittext en un objeto static (por ejemplo, un static ArrayList<String>) y en la función onResume que se llama cuando el dispositivo ha cambiado la orientación completas los edittext con los datos que has salvado.

Espero haberte ayudado
Responder Con Cita
  #3  
Viejo 01/12/14, 18:38:01
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
 Cita: Originalmente Escrito por adndroide Ver Mensaje
Hola.
Cuando el movil gira se llama a la función onStop.Lo que tienes que hacer es guardar el contenido de los edittext en un objeto static (por ejemplo, un static ArrayList<String>) y en la función onResume que se llama cuando el dispositivo ha cambiado la orientación completas los edittext con los datos que has salvado.

Espero haberte ayudado
Eso es matar moscas a cañonazos, en Android no es nada recomendable usar static salvo en muy contadas ocasiones.

Lo que hay que hacer es guardar en un Bundle, y luego recuperarlas. Así además de para el cambio de orientación te valdrá para casos de destrucción de la Activity por cualquier otro motivo (por ejemplo recibes una llamada mientras estás dentro de la app).

De todas formas puedes configurar la Activity en el Manifest para que no se destruya cuando cambias la orientación:

android:configChanges="orientation|screenSize"
Responder Con Cita
  #4  
Viejo 02/12/14, 05:05:30
Array

[xs_avatar]
fernandinho_90 fernandinho_90 no está en línea
Miembro del foro
 
Fecha de registro: sep 2014
Mensajes: 32
Tu operador: Movistar

 Cita: Originalmente Escrito por kriogeN Ver Mensaje
Eso es matar moscas a cañonazos, en Android no es nada recomendable usar static salvo en muy contadas ocasiones.

Lo que hay que hacer es guardar en un Bundle, y luego recuperarlas. Así además de para el cambio de orientación te valdrá para casos de destrucción de la Activity por cualquier otro motivo (por ejemplo recibes una llamada mientras estás dentro de la app).

De todas formas puedes configurar la Activity en el Manifest para que no se destruya cuando cambias la orientación:

android:configChanges="orientation|screenSize"
Con eso no me resulta, en mi Fragment creo un adaptador que implementa a ExpandableListAdapter y tiene como método el siguiente código sacado de internet ( http://www.techiecommunity.net/Andro...Layout-Example ).

Código:
...
@Override     
public View getChildView(int groupPosition, int childPosition,             
boolean isLastChild, View convertView, ViewGroup parent) {                  
View v = null;        
 if(groupPosition == 0) {          
 v = View.inflate(context, R.layout.expandable_child_layout, null);           
TextView txtView = (TextView) v.findViewById(R.id.txtChld1);           
txtView.setText("Green");           
txtView.setTextSize(15f);           
txtView.setBackgroundColor(Color.GREEN);        
 }        
 if(groupPosition == 1) {            
 v = View.inflate(context, R.layout.expandable_child_1_layout, null);        
 }        
 if(groupPosition == 2) {            
 v = View.inflate(context, R.layout.expandable_child_2_layout, null);         
}         
if(groupPosition == 3) {            
 v = View.inflate(context, R.layout.expandable_child_layout, null);             
TextView txtView = (TextView) v.findViewById(R.id.txtChld1);             
txtView.setText("Purple");            
 txtView.setTextSize(15f);         
}        
 v.invalidate();        
 return v;     
}
....
Creo que es porque a cada rato al View se le aplica inflate, cómo puedo arreglarlo para que al cambiar la orientación no se reseteen los datos?

Saludos!
Responder Con Cita
Respuesta

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



Hora actual: 10:18:41 (GMT +2)



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

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