我正在尝试更改我的应用程序语言,并且一切正常,但是菜单字符串在第一次之后就不会更改,需要我再次将语言更改为相同的语言才能更改菜单字符串
我正在使用共享首选项来保存用户想要选择的语言,在活动中,我首先检查共享首选项是否已保存语言,然后根据共享首选项中保存的语言来更改语言。
这是活动中用于更改应用语言的代码
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
android.content.res.Configuration conf = res.getConfiguration();
conf.setLocale(new Locale(language.toLowerCase()));
res.updateConfiguration(conf, dm);
答案 0 :(得分:1)
我找到了解决方案,但我认为这是肮脏的解决方案,它们当然是更好的解决方案。 我只是希望它能帮助任何找不到像我这样的解决方案的人。
我刚刚更改了片段代码,将语言更改为这样。
public void saveData(String lang,String curr){
if (iLang == 0){
Toast.makeText(getActivity(), "Choose your language, please.", Toast.LENGTH_SHORT).show();
}else{
SharedPreferences mPrefs = getActivity().getSharedPreferences("fetch", MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = mPrefs.edit();
prefsEditor.putString("lang", lang);
prefsEditor.putString("curr", curr);
prefsEditor.apply();
getActivity().recreate();
Intent intent = getActivity().getIntent();
getActivity().finish();
startActivity(intent);
}
}
就是这样。
public void saveData(String lang,String curr){
if (iLang == 0){
Toast.makeText(getActivity(), "Choose your language, please.", Toast.LENGTH_SHORT).show();
}else{
SharedPreferences mPrefs = getActivity().getSharedPreferences("fetch", MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = mPrefs.edit();
prefsEditor.putString("lang", lang);
prefsEditor.putString("curr", curr);
prefsEditor.apply();
Intent intent = new Intent(getActivity,HomeActivity.class);
startActivity(intent);
}
}
如果有人可以为我编辑此解决方案以使它更好,我将非常感激。