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 21/01/17, 22:54:08
Array

[xs_avatar]
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Tu operador: Otra
¿Como mantener los EditText al rotar la pantalla?

Hola, espero no molestar, resulta en un fragment creo unos AppCompatEditText desde codigo y estas desaparecen al rotar la pantalla, ¿Cómo podría hacer para que se mantengan?.
Responder Con Cita


  #2  
Viejo 21/01/17, 23:27:07
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
Se puede hacer de 2 maneras.

La más fácil es añadir en el Manifest, en la sección de la Activity que contiene el Fragment:

android:configChanges="orientation"

La más "complicada" (porque realmente también es fácil) es almacenar en el Bundle del evento "onSaveInstanceState" los datos que quieres mantener, y recuperarlos en el "onCreate". De esta manera también te funcionará en el caso de que por cualquier motivo se tenga que destruir la Activity y volver a construirse.

Se pueden combinar los 2 métodos.
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 22/01/17, 11:17:02
Array

[xs_avatar]
Dexafree Dexafree no está en línea
Mr. FAQMan
· Votos compra/venta: (1)
 
Fecha de registro: dic 2008
Mensajes: 8,021
Modelo de smartphone: Samsung Galaxy S i9000 + Galaxy Tab 10.1 WiFi
Tu operador: Movistar
El configChanges siempre lo he visto como una "ñapa".
Si tuvieras layouts distintos en las dos orientaciones, podrias tener problemas.

La forma recomendada y correcta de hacerlo es con el onSaveInstanceState (que una vez coges el hábito, lo implementas para todas las pantallas para soportar rotacion, cambios de idioma...).
Responder Con Cita
Gracias de parte de:
  #4  
Viejo 22/01/17, 14:51:10
Array

[xs_avatar]
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Tu operador: Otra
 Cita: Originalmente Escrito por kriogeN Ver Mensaje
La más "complicada" (porque realmente también es fácil) es almacenar en el Bundle del evento "onSaveInstanceState" los datos que quieres mantener, y recuperarlos en el "onCreate". De esta manera también te funcionará en el caso de que por cualquier motivo se tenga que destruir la Activity y volver a construirse.
 Cita: Originalmente Escrito por Dexafree Ver Mensaje
La forma recomendada y correcta de hacerlo es con el onSaveInstanceState (que una vez coges el hábito, lo implementas para todas las pantallas para soportar rotacion, cambios de idioma...).
Lo intenté de mil maneras pero no sé donde estoy fallando, el codigo que le añadí al onCreateView de mi fragment es este
[PHP]if (savedInstanceState!=null){
Log.d("asd",savedInstanceState.getString("etiqueta _x"));
etiquetaX=savedInstanceState.getString("etiqueta_x ");

eTEtiquetaX.setText(etiquetaX);
Toast.makeText(getActivity(), etiquetaX,Toast.LENGTH_SHORT).show();
}[/PHP]

Y esto hice en el metodo onSave onSaveInstanceState

[PHP]@Override
public void onSaveInstanceState(Bundle outState){

outState.putString("etiqueta_x", eTEtiquetaX.getText().toString());

super.onSaveInstanceState(outState);
}[/PHP]

Lo más extraño de todo es que al rotar la pantalla el Tast y Log.d si me muestran lo que está en el AppCompatEditText más no lo pone en el AppCompatEditText.
Agradecería mucho su ayuda.
Responder Con Cita
  #5  
Viejo 22/01/17, 18:06:59
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 LEAJIM_454 Ver Mensaje
Lo intenté de mil maneras pero no sé donde estoy fallando, el codigo que le añadí al onCreateView de mi fragment es este
[PHP]if (savedInstanceState!=null){
Log.d("asd",savedInstanceState.getString("etiqueta _x"));
etiquetaX=savedInstanceState.getString("etiqueta_x ");

eTEtiquetaX.setText(etiquetaX);
Toast.makeText(getActivity(), etiquetaX,Toast.LENGTH_SHORT).show();
}[/PHP]

Y esto hice en el metodo onSave onSaveInstanceState

[PHP]@Override
public void onSaveInstanceState(Bundle outState){

outState.putString("etiqueta_x", eTEtiquetaX.getText().toString());

super.onSaveInstanceState(outState);
}[/PHP]

Lo más extraño de todo es que al rotar la pantalla el Tast y Log.d si me muestran lo que está en el AppCompatEditText más no lo pone en el AppCompatEditText.
Agradecería mucho su ayuda.
Asegurate que en algún sitio después no hagas un setText(""), es lo único que se me ocurre.

No tiene que ser en el onCreateView, puede ser en algo que ejecutas en el onStart o en el onResume.
Responder Con Cita
Respuesta

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



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