package openfoodfacts.github.scrachx.openfood.fragments; import android.content.res.Configuration; import android.os.Build; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v7.preference.PreferenceFragmentCompat; import openfoodfacts.github.scrachx.openfood.R; import openfoodfacts.github.scrachx.openfood.utils.LocaleHelper; public class PreferencesFragment extends PreferenceFragmentCompat { @Override public void onCreatePreferences(Bundle bundle, String rootKey) { setPreferencesFromResource(R.xml.preferences, rootKey); findPreference("Locale.Helper.Selected.Language").setOnPreferenceChangeListener((preference, locale) -> { FragmentActivity activity = PreferencesFragment.this.getActivity(); Configuration configuration = activity.getResources().getConfiguration(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { configuration.setLocale(LocaleHelper.getLocale((String) locale)); activity.recreate(); } return true; }); } }