这就是我在活动中使用代码的方式
Utils.updateLocale(this, App.instance.language)
我尝试脱离并附着碎片。重新创建的活动,仍然无法正常工作。
当您在运行时更改语言时,UI的某些部分可能会继续显示旧字符串,因为它们是通过以前的配置组成(或“夸大”)。在JetPack组成(甚至在传统片段中)中,如果仅在资源中更改了语言环境,则UI不会自动更新。取而代之的是,您必须“强制”组合的重新组成(甚至是完整的娱乐),以便他们从资源中拾取新语言。
如果您使用的UI撰写,则可以保存跟踪当前语言的状态,并在更改时使用钥匙强制重新分配,这样。
@Composable
fun MainScreen(currentLanguage: String) {
key(currentLanguage) {
Column(modifier = Modifier.fillMaxSize()) {
Text(text = stringResource(id = R.string.hello))
}
}
}
其他组合友好的方法是通过组成local提供当前的配置(或语言环境)。
其他方法 - 传统的Android观点更常见的是在语言变化时重新创建活动。