Язык вкладок SlidingTabLayout не изменяется после программного изменения языка ресурсов приложения - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь добавить некоторые особенности в готовое приложение для Android, и один из них программно меняет язык приложения.

Что я делаю для изменения ресурсов приложения: выполнение этого кода в onCreate для каждого действия:

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Resources res = getResources();
        DisplayMetrics dm = res.getDisplayMetrics();
        android.content.res.Configuration conf  = res.getConfiguration();
        conf.setLocale(new Locale(Utils.getAppPreferences("LANG")));
        res.updateConfiguration(conf, dm);
    }

// static member functions to return the sharedpreference that holds app's current language
public static String getDeviceLanguage() {

    return Locale.getDefault().getLanguage();
}


public static String getAppPreferences(String key) {
    SharedPreferences sharedpreferences = AppController.getInstance().getSharedPreferences("AppPreferences", 0);
    return sharedpreferences.getString(key, Locale.getDefault().getLanguage());
}

 // and after all of this I am restarting MainActivity 
  Intent intent = new Intent(this.getApplicationContext(), MainActivity.class);
    startActivity(intent);

Мне нужно переключиться между арабским «ar» и английским «en».Переводы уже доступны для всех языков в ресурсах.Все ресурсы изменяются , за исключением только вкладок TabBarLayout, все еще использующих язык устройства.

1 Ответ

0 голосов
/ 18 февраля 2019

Язык должен быть установлен перед настройкой просмотра содержимого.Если это невозможно, перезапустите действие с новым намерением и завершите старое действие.

...