onConfigurationChange方法中的Android语言更改

时间:2015-11-24 09:25:33

标签: android android-activity locale android-configchanges

我在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被调用时连接到其他蓝牙设备,即整个应用会话只有一次。

2 个答案:

答案 0 :(得分:1)

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

我建议将布局设置从onCreate移到另一个方法,并从onCreateonConfigurationChanged调用此新方法。如果字符串仅在使用@ string / xxx的布局上,请不要忘记以编程方式设置所有值(即字符串)。

答案 1 :(得分:0)

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

它可以帮助您更改所有活动中的语言,而不是onCreate()