Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
菜单语言没有';当我改变android应用程序语言时,我不会改变_Android - Fatal编程技术网

菜单语言没有';当我改变android应用程序语言时,我不会改变

菜单语言没有';当我改变android应用程序语言时,我不会改变,android,Android,我正在尝试更改我的应用程序语言,一切正常,但菜单字符串在第一次更改后不会更改,需要我再次将语言更改为相同的语言才能更改菜单字符串 我正在使用SharedReferences保存用户想要选择的语言,在活动中,我首先检查SharedReferences是否保存了语言,并根据SharedReferences中保存的语言更改语言 这是我用来更改应用程序语言的活动中的代码 Resources res = getResources(); DisplayMetrics dm = res.get

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

我正在使用SharedReferences保存用户想要选择的语言,在活动中,我首先检查SharedReferences是否保存了语言,并根据SharedReferences中保存的语言更改语言

这是我用来更改应用程序语言的活动中的代码

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

我找到了解决方案,但我认为这是肮脏的解决方案,他们当然是更好的解决方案。 我只是希望它能帮助像我这样找不到解决办法的人

我刚刚更改了fragment的代码,将语言更改为这样

公共void saveData(字符串lang、字符串curr){

就像这样

公共void saveData(字符串lang、字符串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);
    }

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

}