我在MainActivity的onConfigurationChange mehtod中使用以下代码
Locale locale = new Locale(getDefault().getLanguage());
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getApplicationContext().getResources().updateConfiguration(config, null);
当用户通过“设置”选择其他语言时,会调用onConfigurationChange方法,但在MainActivity语言更改后打开其他活动时语言不会更改。
我的MainActivity是在整个应用会话期间保持开放的活动
我能够改变语言的唯一方法是当MainAcitivity调用onCreate方法但我不想要那个,因为我在MainActivity中启用了蓝牙配对,每当onCreate被调用时连接到其他蓝牙设备,即整个应用会话只有一次。
答案 0 :(得分:1)
您已经回答了自己的问题,当onConfigurationChanged
被触发时,它不会自动更新所有内容。你需要手动完成。
我建议将布局设置从onCreate
移到另一个方法,并从onCreate
和onConfigurationChanged
调用此新方法。如果字符串仅在使用@ string / xxx的布局上,请不要忘记以编程方式设置所有值(即字符串)。
答案 1 :(得分:0)
请检查此问题: Changing Locale within the app itself
它可以帮助您更改所有活动中的语言,而不是onCreate()