Android onConfigurationChange 方法中的语言更改

Android language change in onConfigurationChange method

我在 Main 的 onConfigurationChange 方法中使用以下代码Activity

Locale locale = new Locale(getDefault().getLanguage());
Locale.setDefault(locale);  
Configuration config = new Configuration();  
config.locale = locale;  
getApplicationContext().getResources().updateConfiguration(config, null);

并且当用户通过“设置”选择不同的语言时,将调用 onConfigurationChange 方法,但语言不会改变,尽管在 MainActivity 之后打开的其他活动改变了语言。

My MainActivity 是 Activity,它在整个应用程序会话期间保持打开状态

我能够更改语言的唯一方法是当 MainAcitivity 调用 onCreate 方法时,但我不希望这样,因为我在 MainActivity 中启用了蓝牙配对,只要调用 onCreate 就会连接到其他蓝牙设备即在整个应用程序会话中只有一次。

您已经回答了您自己的问题,当 onConfigurationChanged 被触发时,它不会自动更新所有内容。您需要手动执行此操作。

我建议将布局设置从 onCreate 移动到另一个方法,并从 onCreateonConfigurationChanged 调用这个新方法。如果字符串仅在使用 @string/xxx.

的布局上,请不要忘记以编程方式设置所有值(即字符串)

请检查这个问题: Changing Locale within the app itself

它可以帮助您在所有活动中更改语言,也不会从 onCreate()