Configuración de la configuración regional ¿No funciona?

Tengo una actividad donde programé el locale a "de" y no funciona como se esperaba y muestra el idioma predeterminado (texto en inglés) que se establece manualmente. Por favor ayuda

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //Programmatically sets the locale and language Locale locale = new Locale("de"); Locale.setDefault(locale); Configuration config = new Configuration(); config.locale = locale; getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics()); Toast.makeText(getApplicationContext(),Locale.getDefault().getDisplayLanguage(),Toast.LENGTH_LONG).show(); setContentView(R.layout.main); Intent intent=new Intent(LatestLocalizationActivity.this,AnotherActivity.class); startActivity(intent); } 

¿habría agregado el archivo Strings.xml en la carpeta res-> value-de?

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //Programmatically sets the locale and language setContentView(R.layout.main); config = getBaseContext().getResources().getConfiguration(); locale = new Locale("de"); Locale.setDefault(locale); config.locale = locale; getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); refresh(); Toast.makeText(getApplicationContext(),Locale.getDefault().getDisplayLanguage(),Toast.LENGTH_LONG).show(); } @Override public void onConfigurationChanged(Configuration newConfig) { Configuration config = getBaseContext().getResources().getConfiguration(); // refresh your views here Locale.setDefault(locale); config.locale = locale; super.onConfigurationChanged(newConfig); } private void refresh() { finish(); Intent myIntent = new Intent(yourActivity.this, yourActivity.class); startActivity(myIntent); } 

Tenga en cuenta que aunque puede ser capaz de hackear cosas para obtener algo parecido a esto, Android no admite hacer esto de una manera robusta. En particular, el marco funciona la configuración actual en los recursos, y lo actualizará cuando lo considere apropiado. Usted estará luchando con esto, y es poco probable que va a ser capaz de no tener situaciones en las que la configuración vuelve a la configuración regional del sistema.

Esto funcionó para mí:

 public static void changeLocale(Context context, Locale locale) { Configuration conf = context.getResources().getConfiguration(); conf.locale = locale; Locale.setDefault(locale); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { conf.setLayoutDirection(conf.locale); } context.getResources().updateConfiguration(conf, context.getResources().getDisplayMetrics()); } 

utilice su CONTEXTO DE ACTIVIDAD y no su contexto de aplicación.

  • OnConfigurationChange no se llama después de cambiar la configuración regional
  • Obtener el nombre del idioma en ese idioma desde el código de idioma
  • Establecer la configuración regional mediante programación
  • ¿Puedo acceder a recursos de diferentes idiomas de Android?
  • Texto de Android a voz en diferentes idiomas
  • Comprueba qué configuración regional se está ejecutando en Android
  • Cambiar la configuración regional en el emulador de Android
  • Cambiar el idioma de las cadenas en la actividad de Android
  • Iniciar la aplicación con un idioma específico
  • ¿Por qué podría Resources.getString () devolver intermitentemente cadenas de la configuración regional equivocada?
  • Cómo crear una instancia de moneda con un país no ISO 3166 como en_UK?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.