我的应用广泛使用片段。它应该支持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没有太多运气。任何帮助表示赞赏。提前谢谢。
答案 0 :(得分:0)
在我看来,如果您收听配置更改,您还应该覆盖Fragment或托管活动中的onConfigurationChanged
方法,然后根据需要使用新的Locale更新UI,而不是分离和重新附加您只需将方法设置到活动的子项中,并根据需要重新填充所有字段