在每一个可能在改变语言区域的Activity 之前显示出来的Activity
中,重载onResume()并加入如下代码:
oldLocale = mLocale;
Locale locale = getLocaleFormPreference(this);
if(oldLocale!=null && !oldLocale.equals(locale)) {
Bundle bundle = new Bundle();
activity.onSaveInstanceState(bundle);
Intent intent = new Intent(this, this.getClass());
intent.putExtra("InstanceState", bundle);
intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivity(intent);
finish();
}
并在onCreate(Bundle savedInstanceState)最后加入和动态更新时完全相同的代码。
mLocale 实际上是在onCreate(Bundle
savedInstanceState)中,指定的Locale 时(也就是上一节最初时那段代码)记住的。
而如果,你的Activity启动需要要一些原有Intent 的数据,别忘了自行导入。