Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Restaurar el estado de TextView después de la rotación de la pantalla?

En mi aplicación tengo TextView y EditText . Ambos tienen datos en él. Cuando la orientación de la pantalla cambia, los datos del EditText permanecen, pero los datos de TextView se borran.

¿Puede alguien ayudarme a encontrar una forma de retener datos en TextView también?

  • Jerarquía de estilo en Android - ¿cuál es el orden de importancia?
  • Cómo crear Vertical Carousel en android?
  • Rápido vértices dinámicos en OpenGL ES 2.0 en Android
  • ¿Cómo obtener los extras de intención si la actividad es `singleTask`?
  • Añadir vista personalizada a la derecha de la barra de herramientas
  • ¿Cómo usar los marcadores de principio y fin en regex para Java String?
  • Cómo agregar borde a un texto en textview android
  • Android: Tamaño de imagen de fondo (en píxeles) que admiten todos los dispositivos
  • Cómo incluir diseños de 10 "y 7" correctamente
  • EditText con la lista de sugerencias a continuación
  • El dispositivo Android no aparece en la lista de anuncios
  • "Android.util.AndroidRuntimeException: requestFeature () debe ser llamado antes de agregar contenido" en showDialog (dialogId)
  • 7 Solutions collect form web for “Restaurar el estado de TextView después de la rotación de la pantalla?”

    Si desea forzar su TextView a guardar su estado debe agregar el atributo freezesText :

     <TextView ... android:freezesText="true" /> 

    De la documentación sobre freezesText :

    Si se establece, la vista de texto incluirá su texto completo actual dentro de su carámbano congelado, además de metadatos, como la posición actual del cursor. Por defecto, esto está desactivado; Puede ser útil cuando el contenido de una vista de texto no se almacena en un lugar persistente como un proveedor de contenido

    Para conservar los datos sobre el cambio de orientación es necesario implementar los dos métodos:

     @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); // Read values from the "savedInstanceState"-object and put them in your textview } @Override protected void onSaveInstanceState(Bundle outState) { // Save the values you need from your textview into "outState"-object super.onSaveInstanceState(outState); } 

    Android no maneja ese tipo de cosas para usted. Debe guardar todos los datos manualmente.

    Se puede utilizar en una actividad para guardar valores

     @Override public Object onRetainNonConfigurationInstance() { HashMap<String, Object> savedValues = new HashMap<String, Object>(); savedValues.put("someKey", someData); return savedValues; } 

    Y usar algo como esto en el método de creación de una actividad para cargar los objetos guardados

     HashMap < String, Object> savedValues = (HashMap<String, Object>)this.getLastNonConfigurationInstance(); 

    También puede elegir el cambio de orientación de inhabilitación para una actividad

     <activity android:name=".Activity" android:screenOrientation="portrait" > <intent-filter> <action android:name="android.intent.action.MAIN" /> </intent-filter> </activity> 

    1) No todas las vistas con un ID guardan su estado. Los widgets de Android, con un ID, cuyo estado puede ser modificado por el usuario, aparecen para guardar su estado en un soft kill. Así que EditText guarda su estado, pero TextView no guarda su estado en un soft kill.

    "AFAIK, Android sólo molesta el estado de ahorro para las cosas que se espera que cambien.Es por eso que guarda el texto en un EditText (que un usuario es probable que cambie) y tal vez no guarda el estado de un TextView (que normalmente se mantiene estática ) "

    Marca m

    Así que puede optar por guardar el estado de la vista de texto en onSaveInstanceState y puede optar por restaurar el estado de la vista de texto en onCreate.

    2) La mejor práctica es guardar el estado de la instancia "no" de vista "interna" incluso si declara

     android:configChanges= "orientation|keyboardHidden" 

    De los documentos:

    "Sin embargo, su aplicación siempre debe ser capaz de apagar y reiniciar con su estado anterior intacto.No sólo porque hay otros cambios de configuración que no se puede evitar de reiniciar la aplicación, sino también para manejar eventos tales como cuando el usuario recibe una entrada Llamada telefónica y luego regresa a su aplicación. "

    JAL

    Modifique sus actividades en AndroidManifest.xml para anular el comportamiento de cambio de orientación agregando esto a su actividad / actividades:

     android:configChanges="orientation|keyboardHidden" 

    Debe verse algo así:

      <activity android:name=".activity.LoginActivity" android:configChanges="orientation|keyboardHidden" android:label="@string/app_name"> </activity> 

    Cuando los cambios de configuración Android reinicia su actividad de forma predeterminada. Para cambiar esto, debe anular el método onConfigurationChanged() . Además, debe agregar android:configChanges a su archivo de manifiesto.

    Puedes leer más aquí .

    Yo tambien use

     android:configChanges="orientation" 

    Y no funcionó.

    Pero entonces encontré una solución.

    Compruebe si tiene la línea siguiente correctamente en su más alto:

     <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="11" /> 

    Asegúrese de que no lea algo como

     <uses-sdk android`:minSdkVersion="11" android:targetSdkVersion="15" />` 

    La tenía en segundo lugar en el primer lugar pero cuando lo corregí el estado consiguió preservado.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.