Después de la rotación de la pantalla, se cambiará el idioma de mi aplicación

He creado una aplicación androide bilingüe (con dos idiomas). He insertado mis cadenas de recursos en dos archivos:

For Persian language (default) values/strings_locale.xml‬ For English language values-en/strings_locale.xml‬ 

En mi primera actividad de lanzamiento he insertado el siguiente código:

 Configuration c = new Configuration(this.getResources().getConfiguration()); c.locale = new Locale("fa_IR"); this.getResources().updateConfiguration(c, this.getResources().getDisplayMetrics()); 

Así que después de este código, mi idioma predeterminado será persa y todas las cadenas de todas las actividades se muestran en idioma persa correctamente.

Pero el problema es cuando la pantalla del dispositivo se gira, todas las cadenas se muestran en Inglés y también sucede para todas las demás actividades! Y tengo que cerrar y reabrir mi aplicación.

¿Por qué sucede esto y cómo puedo solucionar este problema?

Puede hacer una clase que extienda la Application . Allí puede anular un método que se llama cada vez que cambia la configuración (ejemplo cuando se cambia la orientación de la pantalla).

Algo como:

 public class MyApplication extends Application { @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); setLocale(); } private void setLocale() { Locale locale = new Locale("fa_IR"); Locale.setDefault(locale); Configuration config = new Configuration(); config.locale = locale; getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); } } 

Y no te olvides de declararlo en el manifiesto: ejemplo de clase de aplicación

En AndroidManifest.xml:

 <application android:name="com.blaablaa.bumbam.MyApplication" ... 

No entiendo exactamente lo que estás tratando de hacer. Pero, en general, no tiene que administrar el idioma de la aplicación. Android seleccionará automáticamente el idioma del teléfono si está disponible y, en cualquier otro caso, abre un diálogo para elegir el idioma.

Si desea establecer un lenguaje independiente de aquel con su código, lo cual no recomendaría, es probable que haya un problema con su ciclo de vida que impide que se ejecute de nuevo después de un cambio de orientación. Puedo ayudarle con eso si usted publica más de su código.

  • Desactivar la rotación automática en fragmento
  • Rotación de la imagen YUV420 / NV21 en android
  • Rotar de forma programable o dibujar
  • SetRotationY () width API10 en Android
  • ¿Cuál es la ventaja de dejar que una actividad sea destruida en rotación?
  • Traducción después de la rotación
  • Después de girar una línea lineal, los eventos onclick no cambian de posición después de la rotación
  • ¿La imagen resultante de la cámara Android debe girarse después de la captura?
  • LibGDX 1.5 girando sprite alrededor de su centro
  • Rotar un ImageView como una brújula (con el "polo norte" puesto en otro lugar)
  • Phonegap / HTML5 y la pantalla de Android redimensionan el problema en rotación de paisaje a retrato
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.