我有一个主要活动(让我们称之为A)和第二个活动(我们称之为B),用于更改应用程序的语言.关键是,当我单击按钮更改语言时,我也调用了recreate();和B改变它的语言.直到这里它还可以.问题出现在我回到主要活动(A)并且它没有更新语言因为它没有被重新创建时,所以,有没有办法从B重新创建A以更新A?
我使用此代码翻译应用程序(eng版本示例):
public void btnIngles_onClick(View v)
{
Locale locale = new Locale("en");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
this.getApplicationContext().getResources().updateConfiguration(config, null);
recreate();
}
解决方法:
1)活动B改变一些全局设置,例如可通过SharedPreferences访问
2)在活动A中:
@Override
protected void onResume() {
super.onResume();
if(didLanguageChange)
recreate();
}
问题解决了.当活动B进入前台时,活动A将调用onResume(),因为它已切换到暂停状态.