Изменение языка программно внутри ViewPager

Очевидно, что переключение вкладок в ViewPager изменяет язык, выбранный с помощью Locale.setDefault и getActivity(). GetResources(). UpdateConfiguration. Я исправил вращение в манифесте с помощью android:screenOrientation="Portrait", и мне удалось вызывать мой метод каждый раз, когда выбрана каждая вкладка (с помощью OnPageChangeListener). Я также использовал метод ViewPager setOffscreenPageLimit, чтобы избежать последующих вызовов onCreateView любой вкладки (6 вкладок и setOffscreenPageLimit(5)) . После первого onCreateView(при запуске приложения или после popBackStacks, пока фрагмент под контейнером viewpager не станет первым), язык представлений трех левых вкладок (не остальных) правильный, но после некоторого перемещения он снова переключается на устройство. дефолт. Я на андроид 6.0. Это изменение языка

Locale.setDefault(selectedLocale);
config.locale = selectedLocale;
getActivity().getBaseContext().getResources().updateConfiguration(config, getActivity().getBaseContext().getResources().getDisplayMetrics());
getActivity().getResources().updateConfiguration(config, getActivity().getResources().getDisplayMetrics());

Я обновляю фрагменты окна просмотра

while (fm.getBackStackEntryCount()>1) {
            fm.popBackStackImmediate();
        }
        fm.executePendingTransactions();

        ViewPagerContainer fragment = new ViewPagerContainer ();
        fm.beginTransaction()
                    .add(R.id.pages_container, fragment, ViewPagerContainer .TAG)
                    .addToBackStack("ViewPagerContainer")
                    .commit();

0 ответов

Другие вопросы по тегам