Cambio de idioma dentro de la aplicación Android

¿Cómo puedo implementar el cambio de idioma sin tener que configurar manualmente la configuración regional dentro de una aplicación de Android? Sé que la aplicación cargará strings.xml de acuerdo con la configuración regional durante el inicio, pero no quiero que esta elección se haga en función de la configuración regional del sistema, sino que se especifique en Configuración.

O, ¿está configurando manualmente la configuración regional?

Puede extender la clase de aplicación (tiene que declararla en el manifiesto también) y poner algo así en ella.

Siempre que quiera cambiar el idioma, puede llamar

((App)getApplicationContext()).changeLang(lang); 

Desde dentro de su actividad. R.string.locale_lang es sólo una clave que se almacena en strings.xml para las preferencias compartidas

 public class App extends Application { private Locale locale = null; @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if (locale != null) { Locale.setDefault(locale); Configuration config = new Configuration(newConfig); config.locale = locale; getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); } } @Override public void onCreate() { super.onCreate(); SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); String lang = settings.getString(getString(R.string.locale_lang), ""); changeLang(lang); } public void changeLang(String lang) { Configuration config = getBaseContext().getResources().getConfiguration(); if (!"".equals(lang) && !config.locale.getLanguage().equals(lang)) { Editor ed = PreferenceManager.getDefaultSharedPreferences(this).edit(); ed.putString(getString(R.string.locale_lang), lang); ed.commit(); locale = new Locale(lang); Locale.setDefault(locale); Configuration conf = new Configuration(config); conf.locale = locale; getBaseContext().getResources().updateConfiguration(conf, getBaseContext().getResources().getDisplayMetrics()); } } public String getLang(){ return PreferenceManager.getDefaultSharedPreferences(this).getString(this.getString(R.string.locale_lang), ""); } } 
  • Android GPS Localización Velocidad no fiable
  • ¿Es posible obtener distancia entre la ubicación actual y una calle, avenida o zona?
  • Obtener la ubicación de Android a través de wifi no funciona
  • Se pierde el proveedor de Android Fused Location
  • Obtener la dirección de ubicación actual de la aplicación de Android
  • Donde el archivo .apk se coloca en el teléfono después de la instalación
  • Número GPS de satélites y filtrado de ubicaciones
  • Calcular la distancia entre dos ubicaciones geográficas
  • Recibir una notificación (vía BroadcastReceiver) cuando se inicia / detiene el GPS (o servicios de ubicación)
  • Detectar o impedir si el usuario utiliza una ubicación falsa
  • Problemas de permiso para la ubicación en android Marshmallow applicaton
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.