|
||
|
![]() |
![]() |
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
|
||||
|
||||
¿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?.
|
|
#2
|
||||
|
||||
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. |
Gracias de parte de: | ||
#3
|
||||
|
||||
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...).
__________________
|
Gracias de parte de: | ||
#4
|
||||
|
||||
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.
![]() [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. |
#5
|
||||
|
||||
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. ![]() No tiene que ser en el onCreateView, puede ser en algo que ejecutas en el onStart o en el onResume. |
![]() |
![]() |
||||||
|