什么是强制现有活动使用新本地重新加载的正确方法

时间:2011-01-10 10:49:25

标签: android

有一个设置对话框/活动,我允许用户更改区域设置。在那个活动中,我打电话给

 Resources res = ctx.getResources(); 
// Change locale settings on the device 
DisplayMetrics dm = res.getDisplayMetrics(); 
android.content.res.Configuration conf = res.getConfiguration(); 
conf.locale = new Locale(language_code.toLowerCase(), 
coutry_code.toUpperCase()); 
res.updateConfiguration(conf, dm); 

并为我的设置调用onChanged()ListView ......一切都改变了 完美。非常好。 然后我点击后退按钮返回上一个活动 认为应该切换一切;不。一切都还在 以前的语言环境。所以我在onResume()中添加了上面的代码 活动的想法会做到这一点;不。另外,当我点击 这个活动的菜单按钮再次(不是第一次)我没有得到 在onCreateOptionsMenu()中调用它只显示上一个菜单。 我的问题是强制现有活动的正确方法是什么 使用新的本地重新加载?

2 个答案:

答案 0 :(得分:1)

我不确切知道,但这似乎是一个开销。 swithicng语言环境的标准方法是通过系统设置。让用户在那里切换语言环境,只需在代码中使用Locale.getDefault()

答案 1 :(得分:0)

父活动中的OnSharedPreferenceChangeListener是响应首选项更改的正确位置。至于刷新UI,我不完全确定。我们被告知让android为我们管理我们活动的生命周期,但是我并不总是能够工作。一种选择是从onSharedPreferenceChanged调用onCreate()。

编辑:对不起,这个听众可能无法正常工作,因为你不是在谈论共享偏好。