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
移动到另一个方法,并从 onCreate
和 onConfigurationChanged
调用这个新方法。如果字符串仅在使用 @string/xxx.
的布局上,请不要忘记以编程方式设置所有值(即字符串)
请检查这个问题:
Changing Locale within the app itself
它可以帮助您在所有活动中更改语言,也不会从 onCreate()
我在 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
移动到另一个方法,并从 onCreate
和 onConfigurationChanged
调用这个新方法。如果字符串仅在使用 @string/xxx.
请检查这个问题: Changing Locale within the app itself
它可以帮助您在所有活动中更改语言,也不会从 onCreate()