|
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. |
Estás aquí | ||||||
|