2022-12-08 遇到的一点小问题
app里面有个切换语言的功能,根据用户选择的语言来展示对应的string.xml的内容。
主要代码就是通过修改Configuration.setLocale(Locale loc)
方法来实现的。
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
Configuration config = resources.getConfiguration();
config.setLocale(Locale.FRENCH);
resources.updateConfiguration(config, metrics);
今天突然遇到的一点小问题 ,发现app设置的英文,但在一段操作后,变成了手机选择的简体中文。
debug看了下Configuration
,发现由设置的"en", ""
变为手机的"zh", "CN"
。
网上找了下,看到Android N之后 Webview导致多语言切换失效的问题,明白是WebView
引起的。
相关信息,文章里也贴了链接#Android - WebView language changes abruptly on Android 7.0 and above,记录一下。
在页面的onDestroy()
方法,重新调用语言设置,测试了一下,离开有WebView的页面就正常了。
@Override
public void onDestroy() {
super.onDestroy();
//重新设置一下语言
}
继续测试,发现有个有WebView页面的弹窗,弹出来的语言和app设置的不一致。
查了下,发现页面在inflater.inflate(R.layout.xxx, container, false)
后,如果xml文件里有<WebView/>
控件,Configuration就发生变化了。
测试了一下,在inflater.inflate()
之后重新设置语言就可以正常了。
网友评论