LayoutInflater.inflate更改app中的区域设置

时间:2017-09-27 15:55:39

标签: android android-fragments locale

我有一个根据用户输入设置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中的错误吗?

如果需要,我可以提供更多信息。谢谢! :)

0 个答案:

没有答案