2022-12-08 遇到的一點(diǎn)小問題
app里面有個(gè)切換語言的功能,根據(jù)用戶選擇的語言來展示對應(yīng)的string.xml的內(nèi)容。
主要代碼就是通過修改Configuration.setLocale(Locale loc)
方法來實(shí)現(xiàn)的。
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
Configuration config = resources.getConfiguration();
config.setLocale(Locale.FRENCH);
resources.updateConfiguration(config, metrics);
今天突然遇到的一點(diǎn)小問題 ,發(fā)現(xiàn)app設(shè)置的英文坝辫,但在一段操作后篷就,變成了手機(jī)選擇的簡體中文射亏。
debug看了下Configuration
,發(fā)現(xiàn)由設(shè)置的"en", ""
變?yōu)槭謾C(jī)的"zh", "CN"
竭业。
網(wǎng)上找了下智润,看到Android N之后 Webview導(dǎo)致多語言切換失效的問題,明白是WebView
引起的未辆。
相關(guān)信息窟绷,文章里也貼了鏈接#Android - WebView language changes abruptly on Android 7.0 and above,記錄一下咐柜。
在頁面的onDestroy()
方法兼蜈,重新調(diào)用語言設(shè)置,測試了一下拙友,離開有WebView的頁面就正常了为狸。
@Override
public void onDestroy() {
super.onDestroy();
//重新設(shè)置一下語言
}
繼續(xù)測試,發(fā)現(xiàn)有個(gè)有WebView頁面的彈窗遗契,彈出來的語言和app設(shè)置的不一致辐棒。
查了下,發(fā)現(xiàn)頁面在inflater.inflate(R.layout.xxx, container, false)
后牍蜂,如果xml文件里有<WebView/>
控件漾根,Configuration就發(fā)生變化了。
測試了一下鲫竞,在inflater.inflate()
之后重新設(shè)置語言就可以正常了辐怕。