Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.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
Android 使用导航组件API 24+时更改语言;_Android_Android Fragments_Localization_Android Architecture Components_Android Architecture Navigation - Fatal编程技术网

Android 使用导航组件API 24+时更改语言;

Android 使用导航组件API 24+时更改语言;,android,android-fragments,localization,android-architecture-components,android-architecture-navigation,Android,Android Fragments,Localization,Android Architecture Components,Android Architecture Navigation,TL;DR我们希望更改要显示的片段的区域设置(API 24+),而所有这些片段都将位于同一活动中 我们正在使用NavHostFragment和start\u nav\u graph.xml。 此图有多个片段,即登录、登录、GDPR…等 在此流程中,如果登录后发现您是德国用户,我们将尝试将您的区域设置更改为德语。 在当前场景中,所有即将出现的片段(如Onboard和GDPR)都将显示在设备的区域设置中,而不是德语 我们不能在这样的活动中使用attachBaseContext,因为活动已经创建。我也

TL;DR我们希望更改要显示的片段的区域设置(API 24+),而所有这些片段都将位于同一活动中

我们正在使用
NavHostFragment
start\u nav\u graph.xml
。 此图有多个片段,即登录、登录、GDPR…等

在此流程中,如果登录后发现您是德国用户,我们将尝试将您的区域设置更改为德语。 在当前场景中,所有即将出现的片段(如Onboard和GDPR)都将显示在设备的区域设置中,而不是德语


我们不能在这样的活动中使用
attachBaseContext
,因为活动已经创建。

我也有同样的痛苦。我试着去做

NavigationUI.setupWithNavController(mToolbar,mNavController, mAppBarConfiguration);

但这也无济于事,因为工具栏标题和导航抽屉项目正在使用旧资源,当我在执行
活动时,重新创建()
,它实际上正在发生,但当您关闭应用程序并再次重新启动时,同样的问题

这是我能想到的最好的了

注意:-这只是一个黑客攻击,不是正确的解决方案

更改语言后,将该语言保存在sharepreferences中,覆盖活动中所有必需的方法,使用share preferences中的语言。将事件发送到“活动”和“活动”中,一旦在“活动”中获取事件,您可以执行以下两项操作之一

备选案文1:-

重新创建()
。这很有效,但存在碎片回退的问题

备选案文2:-

finish()
intent.putExtra("LANGUAGE_CHANGE", true)
startActivity(intent)   // or getIntent() if using java
overridePendingTransition(0, 0)

在oncreate中,如果您打算更改
语言
,则转到所需的片段。

我所做的是将其分为两部分,启动流程的第一部分,我不知道用户的语言,第二部分,我知道用户的语言。一旦我有了这些信息,我就开始第二部分,然后我可以像往常一样
attachBaseContext
。希望这有帮助