ActivityPreference не использует ресурсы справа налево при изменении локали

Сейчас я занимаюсь разработкой приложения, которое поддерживает 3 языка на базе Ярослава Березанского. Это здорово, и я могу изменить язык приложения во время выполнения, но есть проблема, которая смутила меня. К сожалению, когда я хочу перейти к ActivityPreference, язык и ресурсы по-прежнему остаются на английском языке, и он не использует ресурсы справа налево, такие как макеты и строки, когда я меняю язык приложения на фарси. В чем проблема с Preference v7? Я приложил несколько изображений из приложения, когда язык английский и фарси. Заранее спасибо.

Изменить метод языка

private static Context updateResources(Context context, String language) {
        Locale locale = new Locale(language);
        Locale.setDefault(locale);

        Resources res = context.getResources();
        Configuration config = new Configuration(res.getConfiguration());
        if (Build.VERSION.SDK_INT >= 17) {
            config.setLocale(locale);
            context = context.createConfigurationContext(config);
        } else {
            config.locale = locale;
            res.updateConfiguration(config, res.getDisplayMetrics());
        }
        return context;
    }

ActivityPreference коды

public class ActivityPreference extends AppCompatActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_setting);

        if (savedInstanceState == null) {
            // Display the fragment as the main content.
            FragmentPreference fragmentPreference = FragmentPreference.newInstance();
            fragmentPreference.setArguments(this.getIntent().getExtras());
            this.getSupportFragmentManager().beginTransaction().replace(R.id.content, fragmentPreference).commit();
        }
    }
}

FragmentPreference коды

public class FragmentPreference  extends PreferenceFragmentCompat {

    public static FragmentPreference newInstance(){
        FragmentPreference fr = new FragmentPreference();
        return fr;
    }

    @Override
    public void onStart() {
        super.onStart();

        int width = ViewGroup.LayoutParams.MATCH_PARENT;
        int height = ViewGroup.LayoutParams.MATCH_PARENT;
        FragmentPreference.this.getActivity().getWindow().setLayout(width, height);
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public void onCreatePreferences(Bundle bundle, String s) {
        addPreferencesFromResource(R.xml.preference);
    }
}

Preference Activity с английским языком

Главное меню выключено из приложения, когда язык английский

Предпочтительная деятельность на фарси

Главное меню от приложения, когда язык фарси

0 ответов

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