Как изменить язык приложения, когда пользователь выбирает язык?

Я хочу, чтобы мое приложение поддерживало три языка: испанский, португальский и английский. И дать возможность выбрать язык в приложении. Я сделал

1) 3 папки для рисования drawable-es, drawable-pt, drawable.

2) 3 значения папки значений-es, values-pt, values.Change String.xml значения в соответствии с языками.

У меня есть imageView для выбора языка. При нажатии на него открывается меню, которое состоит из опции английский, испанский, португальский.

Я установил Locale внутри приложения на выбор опции по этому коду

public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.en:
             Locale locale = new Locale("en"); 
             Locale.setDefault(locale);
             Configuration config = new Configuration();
             config.locale = locale;
             getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
             Toast.makeText(this, "Locale in English !", Toast.LENGTH_LONG).show();
             break;

        case R.id.pt:
             Locale locale2 = new Locale("pt"); 
             Locale.setDefault(locale2);
             Configuration config2 = new Configuration();
             config2.locale = locale2;
             getBaseContext().getResources().updateConfiguration(config2, getBaseContext().getResources().getDisplayMetrics());

             Toast.makeText(this, "Locale in Portugal !", Toast.LENGTH_LONG).show();
             break;

        case R.id.es:
             Locale locale3 = new Locale("es"); 
             Locale.setDefault(locale3);
             Configuration config3 = new Configuration();
             config3.locale = locale3;
             getBaseContext().getResources().updateConfiguration(config3, getBaseContext().getResources().getDisplayMetrics());

             Toast.makeText(this, "Locale in Spain !", Toast.LENGTH_LONG).show();
             break;


    }
         return super.onOptionsItemSelected(item);
}

Я заявляю в МанифестAndroid: configChanges = "локаль"

Это работает, но есть некоторые проблемы.

Проблема: -

1) Когда выбран язык, экран, который состоит из изображения выбора языка, не изменяется, а другие экраны меняются.

2) После изменения ориентации приложение восстанавливает язык в соответствии с локалью телефона.

Ответы на вопрос(6)

Ваш ответ на вопрос