当我更改android应用程序语言时,菜单语言不会更改

时间:2018-12-26 13:20:50

标签: android

我正在尝试更改我的应用程序语言,并且一切正常,但是菜单字符串在第一次之后就不会更改,需要我再次将语言更改为相同的语言才能更改菜单​​字符串

我正在使用共享首选项来保存用户想要选择的语言,在活动中,我首先检查共享首选项是否已保存语言,然后根据共享首选项中保存的语言来更改语言。

这是活动中用于更改应用语言的代码

    Resources res = getResources();
    DisplayMetrics dm = res.getDisplayMetrics();
    android.content.res.Configuration conf = res.getConfiguration();
    conf.setLocale(new Locale(language.toLowerCase()));
    res.updateConfiguration(conf, dm);

1 个答案:

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

}

如果有人可以为我编辑此解决方案以使它更好,我将非常感激。