无法改变奥利奥的语言

AFL*_*ALI 7 android locale android-8.0-oreo

我正在尝试在我的应用中使用阿拉伯语和英语.它在牛轧糖或以下运行的设备上运行良好.但它不适用于奥利奥设备.API 26中是否有一些新的代码要求?我正在使用下面的代码.

public void changeLanguage(Context context, String language) {
    Locale locale = new Locale(language);
    Locale.setDefault(locale);
    Configuration config = context.getResources().getConfiguration();
    config.setLocale(locale);
    context.createConfigurationContext(config);
    context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
}
Run Code Online (Sandbox Code Playgroud)

而我正在传递"en"和"ar"作为语言论证.

Ale*_*nko 4

当您设置新的时,Locale您应该重新启动您的Activity. 您可以使用下一个代码片段来执行它:

private void restartActivity() {
    Intent intent = getIntent();
    finish();
    startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)

然后你的changeLanguage()方法将如下所示:

public void changeLanguage(Context context, String language) {
    Locale locale = new Locale(language);
    Locale.setDefault(locale);
    Configuration config = context.getResources().getConfiguration();
    config.setLocale(locale);
    context.createConfigurationContext(config);
    context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());

    restartActivity();
}
Run Code Online (Sandbox Code Playgroud)