Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:在语言更改后刷新当前片段_Java_Android_Android Fragments_Layout_Refresh - Fatal编程技术网

Java Android:在语言更改后刷新当前片段

Java Android:在语言更改后刷新当前片段,java,android,android-fragments,layout,refresh,Java,Android,Android Fragments,Layout,Refresh,因此,我的MainActivity有一个带有一组片段的导航抽屉 在导航栏的顶部,我有两个代表一种语言的标志。如果用户单击一种语言,应用程序将更改整个应用程序的语言 一切都很顺利(活动刷新、导航抽屉和所有片段都被翻译),但打开的片段没有。这意味着用户需要单击导航抽屉并再次选择片段以查看其翻译 如何刷新用户所在的当前片段 提交片段时将标记添加到片段中: fragmentManager.beginTransaction().replace(R.id.your_id, fragment, "Your_

因此,我的
MainActivity
有一个带有一组片段的导航抽屉

在导航栏的顶部,我有两个代表一种语言的标志。如果用户单击一种语言,应用程序将更改整个应用程序的语言

一切都很顺利(活动刷新、导航抽屉和所有片段都被翻译),但打开的片段没有。这意味着用户需要单击导航抽屉并再次选择片段以查看其翻译


如何刷新用户所在的当前片段

提交片段时将标记添加到片段中:

fragmentManager.beginTransaction().replace(R.id.your_id, fragment, "Your_Fragment_TAG").commitAllowingStateLoss();
然后,您可以分离并再次附加片段以进行刷新:

// Reload current fragment
Fragment frg = null;
frg = getSupportFragmentManager().findFragmentByTag("Your_Fragment_TAG");
final FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.detach(frg);
ft.attach(frg);
ft.commit();

谢谢你的帖子。我看过这段代码,但在运行时不起作用。因为
你的_Fragment_标记
不知道我是否正确?是的,因为你需要在调用FindFragmentByTag之前设置标记是否还有另一段代码@runtime有效?或者我有义务向用户通知这一点(作为祝酒词)或者重新启动整个应用程序吗?我的选项是什么?是否以编程方式更改字符串?或者您更改了配置区域设置?配置区域设置方法(使用另一个包含strings.xml的values xx文件夹)