Форсирование другой локали работает только для верхней активности в заднем стеке

У меня есть небольшая проблема с локализацией приложения:

Здесь дело - я дал своим пользователям возможностьalways Используйте приложение на норвежском языке, независимо от языка системы.

По большей части это работает просто отлично (я захожу в настройки, устанавливаю флажок, чтобы заставить норвежский, нажимаю «назад», и предыдущая активность отображается на норвежском языке - то же самое «наоборот»), однако - на языке Изменения только корректно обновляют (перезагружают ресурсы) для первой операции в моем «заднем стеке».

Чтобы проиллюстрировать типичный сценарий:

User launches the app, and is presented with the main activity (in English). From there, he selects the second activity (also in English). He then goes into settings (from the menu in the second activity) and sets the preference to force Norwegian.

When he then navigates back, the second activity is correctly updated and displayed in Norwegian (so far so good). However, when he presses "back" once more to return to the main activity, it is still displayed in English...

If he goes back out and launches the app again, the main activity is correctly displayed in Norwegian...

Есть ли здесь какие-нибудь светлые мысли с предложением, что мне делать?

Relevant source code:

Код, включенный в каждое действие для установки языка отображения:

В onCreate:Globals.locale_default = Locale.getDefault().getDisplayLanguage();

public void onStart() {
    super.onStart();
    forceNorwegian = settings.getBoolean(getString(R.string.pref_key_forceNorwegian).toString(), false);
       if (forceNorwegian) {
           languageCheck("no");
       } else {
            Globals.locale = null;
            languageCheck(Globals.locale_default);
       }
}

public void languageCheck(String lang) {
    Globals.locale = new Locale( lang );
    // Check the current system locale and change it to Norwegian if it's not already the default
    Globals.checkLocale( this );
    if (Globals.language_changed) {
        // Restart activity
        Intent restart = getIntent();
        finish();
        Globals.language_changed = false;
        startActivity(restart);
    }
}

Globals.java:

public class Globals {

public static Locale locale = null;
    public static String locale_default = null;
    public static boolean language_changed = false;

    public static void checkLocale( Activity a ) {
        if( locale == null )
            return;

        Configuration config = a.getBaseContext().getResources().getConfiguration();
        if( !config.locale.equals( locale ) )
        {  // Change to the new locale.  Everything will need to be closed or reloaded.
            config.locale = locale;
            a.getBaseContext().getResources().updateConfiguration( config, null );
            language_changed = true;
        }
    }
}

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

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