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);
}
}