Android 微调器不';t在更改应用程序语言后刷新片段

Android 微调器不';t在更改应用程序语言后刷新片段,android,android-fragments,android-spinner,Android,Android Fragments,Android Spinner,我正在国际化我的应用程序,我的设置片段(负责语言选项)没有按我所希望的那样工作 它有一个带有3种语言的微调器,选择其中一种语言后,它会更改应用程序的语言。它是有效的。。。如果我选择西班牙语并返回菜单,我会看到所有的西班牙语,其他语言也是如此,但是。。。选择语言后,设置片段不会刷新,我认为这很重要。(选择语言后,设置屏幕的语言不会更改,它需要更改片段) 有人能帮我吗?谢谢 代码: this.languagesSpinner.setOnItemSelectedListener(新建) Adapter

我正在国际化我的应用程序,我的设置片段(负责语言选项)没有按我所希望的那样工作

它有一个带有3种语言的微调器,选择其中一种语言后,它会更改应用程序的语言。它是有效的。。。如果我选择西班牙语并返回菜单,我会看到所有的西班牙语,其他语言也是如此,但是。。。选择语言后,设置片段不会刷新,我认为这很重要。(选择语言后,设置屏幕的语言不会更改,它需要更改片段)

有人能帮我吗?谢谢

代码:

this.languagesSpinner.setOnItemSelectedListener(新建)
AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共适配器(@NonNull final AdapterView parent,
@非空最终视图,
int位置,
长id){
最终字符串newLanguage;
开关(languagesSpinner.getSelectedItem().toString()){
案例“英语”:
newLanguage=“en”;
打破
“西班牙语”一案:
newLanguage=“es”;
打破
违约:
newLanguage=“ca”;
打破
}
最终语言环境newLocal=新语言环境(newLanguage);
setDefault(newLocal);
最终配置newConfig=新配置();
newConfig.locale=newLocal;
getContext().getResources().updateConfiguration(newConfig,null);
}
@凌驾
未选择公共无效(@NonNull final AdapterView parent){
Log.i(“SettingsFragment”,“微调器为空”);
}
});

您必须刷新/重新创建ParentActivity以反映更改。您可以调用此方法:

public static void refreshParentActivity(Context context) {
        Activity parentActivity = (Activity) context;
        Intent intent = parentActivity.getIntent();
        parentActivity.finish();
        context.startActivity(intent);
    }

通知微调器适配器更改数据集,如adapter.notifyDataSetChanged();
public static void refreshParentActivity(Context context) {
        Activity parentActivity = (Activity) context;
        Intent intent = parentActivity.getIntent();
        parentActivity.finish();
        context.startActivity(intent);
    }