我有一个根据用户输入设置locale
的应用。这适用于除fragment
之外的所有视图。
在:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (rootView == null) {
rootView = inflater.inflate(R.layout.fragment_booking, container, false);
它会更改locale
...如果我调试,在充气线之前,getResources().getConfiguration().locale
是用户选择的locale
。但在此行之后,相同的值已更改为电话设备的locale
...即使它的写法完全相同,也不会发生在其他片段中。
这是设置语言环境的代码:
public static void setApplicationLanguage(Context context) {
try {
String languageCode = StorageManager.getInstance().getStringValue(MarketRegions.SELECTED_LANGUAGE, DEFAULT_LANGUAGE);
Locale locale = new Locale(StringUtils.substring(languageCode, 0, 2), StringUtils.substring(languageCode, 3, 5));
Resources resources = context.getResources();
DisplayMetrics dm = resources.getDisplayMetrics();
Configuration conf = resources.getConfiguration();
conf.locale = locale;
resources.updateConfiguration(conf, dm);
} catch (Exception e) {
e.printStackTrace();
}
}
有谁知道为什么会这样?这是Android中的错误吗?
如果需要,我可以提供更多信息。谢谢! :)