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


 
Herramientas
  #1  
Viejo 21/01/17, 22:54:08
Avatar de LEAJIM_454
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
Mensajes: 215
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Versión de ROM: 2.3.6 Stock
Tu operador: Otra
Mencionado: 1 comentarios
Tagged: 0 hilos
¿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
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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
Avatar de Dexafree
Dexafree Dexafree no está en línea
Mr. FAQMan
Mensajes: 8,021
Compra y venta: (1)
 
Fecha de registro: dic 2008
Mensajes: 8,021
Modelo de smartphone: Samsung Galaxy S i9000 + Galaxy Tab 10.1 WiFi
Versión de ROM: Android 4.1.1 Jelly Bean
Versión de Radio: KF1
Tu operador: Movistar
Mencionado: 65 comentarios
Tagged: 2 hilos
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
Avatar de LEAJIM_454
LEAJIM_454 LEAJIM_454 no está en línea
Miembro del foro
Mensajes: 215
 
Fecha de registro: nov 2012
Mensajes: 215
Modelo de smartphone: Galaxy Ace
Versión de ROM: 2.3.6 Stock
Tu operador: Otra
Mencionado: 1 comentarios
Tagged: 0 hilos
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
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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   HTCMania > Todo sobre Android > Programación y Desarrollo para Android

Herramientas

Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 14:09:41 (GMT +2)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007