El texto de TextView desaparece cuando se gira el dispositivo
Estoy escribiendo una aplicación de marcación telefónica para Android. He creado un diseño para el teclado, que contiene un TextView y 10 botones. Los botones son como teclas para 10 dígitos (0 a 9) y TextView es para mostrar el número según las teclas presionadas.
En mi aplicación, estoy añadiendo el texto ("0" o "1", etc.) al TextView para cada botón presionado. Si presiono los botones 1, 2, 3 , el texto de TextView es 123 . El problema es, vamos a tomar la pantalla está en modo horizontal y TextView contiene 123, si lo cambio, en modo vertical no hay texto en TextView.
- Valor entero en TextView
- Palabra especial de Higlight en la vista de texto
- Android TextView id con una variable?
- TextView con diferentes fuentes y estilos?
- Palabra que se puede hacer clic en TextView en android
Por favor, ayúdame con respecto a esto.
- Cómo cambiar el color de fondo de TextView a valor inicial
- Android sdk 18 La gravedad de TextView no funciona verticalmente
- Utilizar programaticamente setTextSize en? Attr / textAppearanceLarge
- La vista de texto cambia el color de fondo sin ninguna razón
- Prevenir salto de línea en TextView
- Cómo ajustar la altura de línea en TextView con varios tamaños de tipo?
- Problema de diseño con Android: girado TextView
- Android: TextView automáticamente truncar y reemplazar los últimos 3 caracteres de String
Por favor, compruebe el cambio de orientación, en el método de creación se llama, que requiere que todas las vistas que se crean de nuevo, por lo que necesita utilizar uno de los siguientes métodos:
- Use el método onSavedInstance y guarde los estados de componentes / vistas para agrupar.
-
Sólo use el siguiente indicador true en su archivo de manifiesto en la etiqueta de actividad android: configChanges = "keyboardHidden | orientation". como abajo:
<activity android:name=".SampleActivity" android:label="@string/app_name" android:configChanges="keyboardHidden|orientation"> ... </activity>
Lo que @jeet recomienda no funcionó para mí. Tuve que añadir "screenSize". Esta es la línea que debe agregar en su manifest.xml en el nodo <activity>
de su actividad:
android:configChanges="keyboardHidden|orientation|screenSize"
Así, el nodo completo puede tener este aspecto:
<activity android:name=".YourActivity" android:label="@string/app_name" android:configChanges="keyboardHidden|orientation|screenSize" android:theme="@style/AppTheme.NoActionBar">
La razón de esto se debe a que Android básicamente destruye la actividad y la crea de nuevo cada vez que gira el dispositivo. Esto es principalmente para permitir diferentes diseños basados en modo retrato / paisaje.
La mejor manera de manejar esto es almacenar los datos que necesite mantener dentro del Activity Bundle , respondiendo al evento onSavedInstance (llamado justo antes de que Android destruya la actividad), y luego volver a aplicar los del evento onCreate estándar.
Aunque puede agregar "orientación" a la propiedad configChanges, tenga en cuenta que básicamente le está diciendo a Android que va a manejar todo lo relacionado con el cambio de orientación usted mismo, incluyendo cambiar el diseño, etc.
Si alguien todavía está teniendo problemas … esto hizo el truco para mí
public class BranjeKP extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_branje_kp); //... } @Override protected void onSaveInstanceState(Bundle out) { super.onSaveInstanceState(out); out.putString("TVNazivPod", TVNazivPodatka.getText().toString()); out.putString("TVEnotaMere", TVEnotaMere.getText().toString()); } @Override protected void onRestoreInstanceState(Bundle in) { super.onRestoreInstanceState(in); TVNazivPodatka.setText(in.getString("TVNazivPod")); TVEnotaMere.setText(in.getString("TVEnotaMere")); }
Básicamente, guarda los valores que desee antes de la rotación (es decir, cuando se llama onSaveInstanceState) a un paquete y después de la rotación (onRestoreInstanceState), saca todos los valores de Bundle. Sólo para aclarar, TVNazivPodatka y TVEnotaMere son widgets TextView.
… con una ayuda de Cómo evitar que las vistas personalizadas pierdan el estado a través de los cambios de orientación de la pantalla