如何在android中应用语言更改后刷新片段?

时间:2015-02-19 11:02:53

标签: android android-fragments

我的应用广泛使用片段。它应该支持3种语言 - 英语,阿拉伯语和库尔德语。主屏幕包含一个导航抽屉,其中包含一个选项菜单,其中一个选项是打开语言选择器对话框的语言。语言选择器有3个按钮 - 英语,库尔德语和阿拉伯语单击按钮可以改变语言 -

private void setLocale(String code){
        Configuration config=new Configuration();
        Locale locale = null;
        locale=new Locale(code);
        Locale.setDefault(locale);
        config.locale=locale;
        context.getResources().updateConfiguration(config,
                  context.getResources().getDisplayMetrics());
        dismiss();

    }

我已将以下代码添加到onConfigurationChange -

FragmentManager fragmentManager = getSupportFragmentManager();
        int count=fragmentManager.getBackStackEntryCount();

        BackStackEntry latestEntry=(BackStackEntry) fragmentManager.getBackStackEntryAt(count-1);
        String str=latestEntry.getName();
        Fragment fragment=fragmentManager.findFragmentByTag(str);
        if(fragment==null){
            return;
        }
        FragmentTransaction fragTransaction = fragmentManager.beginTransaction();
        fragTransaction.detach(fragment);
        fragTransaction.attach(fragment);
        fragTransaction.commit();

我已将以下内容添加到android清单 -

android:configChanges="locale"

但似乎没有发生任何事情。我也试过 - Is it possible to refresh the view of a Fragment没有太多运气。任何帮助表示赞赏。提前谢谢。

1 个答案:

答案 0 :(得分:0)

在我看来,如果您收听配置更改,您还应该覆盖Fragment或托管活动中的onConfigurationChanged方法,然后根据需要使用新的Locale更新UI,而不是分离和重新附加您只需将方法设置到活动的子项中,并根据需要重新填充所有字段