Изменение языка программно внутри ViewPager - PullRequest
0 голосов
/ 29 ноября 2018

Видимо, переключение вкладок в ViewPager изменяет язык, выбранный с помощью Locale.setDefault и getActivity().getResources().updateConfiguration.Я зафиксировал поворот в манифесте с помощью android:screenOrientation="portrait", и мне удавалось вызывать мой метод каждый раз при выборе каждой вкладки (используя OnPageChangeListener).Я также использовал метод ViewPager setOffscreenPageLimit, чтобы избежать последующих вызовов к onCreateView любой вкладки (6 вкладок и setOffscreenPageLimit(5)).После первых onCreateView (при запуске приложения или после popBackStacks до первого фрагмента под контейнером видового пейджера) язык представлений трех левых вкладок (не остальных) является правильным, но после перемещения он снова меняется наустройство по умолчанию.Я на андроид 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();
...