記錄Android國際化語言適配部分頁面不生效的問題

問題描述

1、App內(nèi)切換語言(Demo:https://github.com/finddreams/AndroidMultiLanguage),并調(diào)用一下代碼重啟頁面

if (getString(R.string.language_zh_cn).equals(iOption.getName())) {
     MultiLanguageUtil.getInstance().updateLanguage(mActivity, LanguageType.LANGUAGE_CHINESE_SIMPLIFIED);
} else if (getString(R.string.language_en).equals(iOption.getName())) {
     MultiLanguageUtil.getInstance().updateLanguage(mActivity, LanguageType.LANGUAGE_EN);
} else if (getString(R.string.use_system).equals(iOption.getName())) {
     MultiLanguageUtil.getInstance().updateLanguage(mActivity, LanguageType.LANGUAGE_FOLLOW_SYSTEM);
} else if (getString(R.string.language_zh_tw).equals(iOption.getName())) {
     MultiLanguageUtil.getInstance().updateLanguage(mActivity, LanguageType.LANGUAGE_CHINESE_TRADITIONAL);
}
 Intent intent = new Intent(mActivity, SplashActivity.class);
 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
 startActivity(intent);
 finish();

2嘹黔、這時候看到的界面都是正常的伐弹,該顯示英文的顯示英文,該顯示繁體的顯示繁體。
3企蹭、殺掉app亦渗,重新打開挖诸。神奇的一幕發(fā)生了,前面打開的幾個界面法精,都顯示的是系統(tǒng)默認語言多律。而且打印

getResources().getConfiguration().locale

得到的也確實是"zh"。
但同時搂蜓,之后打開的界面又都正確的顯示了修改的語言狼荞。

問題:

這就奇怪了,為什么是同一套代碼帮碰,app殺死重啟后的前幾個界面沒有渲染出我想要的語言呢相味?

解決:

我參考了別人的demo,發(fā)現(xiàn)別人的demo在我手機里運行是正常的殉挽,無論如何殺死app都不影響丰涉。這就奇怪了不是?所以斯碌,開始用排查法對比代碼一死。

開始分析

1、對比切換語言的代碼傻唾,我是直接copy的投慈,排除;
2冠骄、對比調(diào)用的代碼逛裤,Application、BaseActivity等關鍵位置一致猴抹,沒有問題带族,排除;
3蟀给、對比依賴蝙砌,發(fā)現(xiàn)我的androidx.appcompat:appcompat與他人正常的版本不同,而BaseActivity繼承自此庫中的AppCompatActivity跋理,故此推測择克,它有重大嫌疑

implementation 'androidx.appcompat:appcompat:1.2.0' (我的,有嫌疑版本)
implementation 'androidx.appcompat:appcompat:1.3.0'

動手替換

1前普、更換依賴肚邢,將androidx.appcompat:appcompat改成1.3.0;
2、重新運行app骡湖,查看成果贱纠;
3、發(fā)現(xiàn)無論如何重啟app响蕴,都可以從頭至尾正確的渲染出我想要的語言谆焊。

結(jié)論

1、這是系統(tǒng)庫appcompat的坑浦夷,如果你的項目也需要適配多語言辖试,建議使用1.3.0及以上版本。

補充

開篇分享的demo中劈狐,通過application.getString(R.string.xx)獲取的文案可能不會獲取到預期的字符串罐孝,需要在Application - attachBaseContext中做出一些調(diào)整,具體如下

    @Override
    protected void attachBaseContext(Context base) {
        MultiLanguageUtil.getInstance().saveSystemCurrentLanguage(base);
        super.attachBaseContext(MultiLanguageUtil.attachBaseContext(base));
        //app剛啟動getApplicationContext()為空
        MultiLanguageUtil.getInstance().setConfiguration(getApplicationContext());
    }

留言

為什么appcompat:1.2.0會導致多語言設置失效肥缔,這其中肯定還有更深層的原因肾档,本人才疏學淺、業(yè)務繁多辫继,既無能力、亦無精力深討此問題根本原因俗慈。希望能有高人有幸看到此貼姑宽,若是不嫌棄,還請留言指點闺阱。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末炮车,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子酣溃,更是在濱河造成了極大的恐慌瘦穆,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赊豌,死亡現(xiàn)場離奇詭異扛或,居然都是意外死亡,警方通過查閱死者的電腦和手機碘饼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門熙兔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人艾恼,你說我怎么就攤上這事住涉。” “怎么了钠绍?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵舆声,是天一觀的道長。 經(jīng)常有香客問我柳爽,道長媳握,這世上最難降的妖魔是什么碱屁? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮毙芜,結(jié)果婚禮上忽媒,老公的妹妹穿的比我還像新娘。我一直安慰自己腋粥,他們只是感情好晦雨,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著隘冲,像睡著了一般闹瞧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上展辞,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天奥邮,我揣著相機與錄音,去河邊找鬼罗珍。 笑死洽腺,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的覆旱。 我是一名探鬼主播蘸朋,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼扣唱!你這毒婦竟也來了藕坯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤噪沙,失蹤者是張志新(化名)和其女友劉穎炼彪,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體正歼,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡辐马,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了局义。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片齐疙。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖旭咽,靈堂內(nèi)的尸體忽然破棺而出贞奋,到底是詐尸還是另有隱情,我是刑警寧澤穷绵,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布轿塔,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏勾缭。R本人自食惡果不足惜揍障,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望俩由。 院中可真熱鬧毒嫡,春花似錦、人聲如沸幻梯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碘梢。三九已至咬摇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間煞躬,已是汗流浹背肛鹏。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留恩沛,地道東北人在扰。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像雷客,于是被迫代替她去往敵國和親芒珠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容