有一个设置对话框/活动,我允许用户更改区域设置。在那个活动中,我打电话给
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()中调用它只显示上一个菜单。 我的问题是强制现有活动的正确方法是什么 使用新的本地重新加载?
答案 0 :(得分:1)
我不确切知道,但这似乎是一个开销。 swithicng语言环境的标准方法是通过系统设置。让用户在那里切换语言环境,只需在代码中使用Locale.getDefault()
。
答案 1 :(得分:0)
父活动中的OnSharedPreferenceChangeListener是响应首选项更改的正确位置。至于刷新UI,我不完全确定。我们被告知让android为我们管理我们活动的生命周期,但是我并不总是能够工作。一种选择是从onSharedPreferenceChanged调用onCreate()。
编辑:对不起,这个听众可能无法正常工作,因为你不是在谈论共享偏好。