[問題] 切換語系 改圖片

作者: Ferich (純粹的透明)   2015-05-15 10:20:13
請問 如何切換ImageButton的圖片
我知道這個問題 肯定是秒解 但是加上一些環境
我先解釋一下
這功能是在切換語系後發生的
A.activity 有個button intent 到 B.activity
B可以切換語系
Resources res = getResources();
Configuration conf = res.getConfiguration();
conf.locale = lo;
if(language.equals("AUTO"))
{
conf.locale =Resources.getSystem().getConfiguration().locale;
}
DisplayMetrics dm = res.getDisplayMetrics();
res.updateConfiguration(conf, dm);
內容大概是這樣
然後在res/drawable-xdhpi 與drawable-zh-rTW-xhdpi 內
各放置了一樣檔名 但是圖片內容不一樣的圖片
假設目前是系統預設的英文 切到B 設置成繁中
然後使用 srart intent from B to A 還把 B finish()掉
有的手機回到A 可以正確顯示中文 但某幾支手機 就還是英文..
他似乎抓不太到 切換語言檔的部分
但是文字的部分 就沒問題 主要是圖片 無法切換
但是切換完後 重開 app 每一隻手機都可以正常抓到語言設定
請問我是忽略了哪一個部分?
感謝各位開發者看完 落落長的問題
作者: Ferich (純粹的透明)   2015-05-15 10:33:00
btw A-B 也是 startintent 過去的 然後 A finish()
作者: zxc190 (卡卡)   2015-05-15 10:38:00
不能換的那個是不是5.0的版本?
作者: Ferich (純粹的透明)   2015-05-15 11:13:00
4.4.45.0 也有這個問題...
作者: erttyy8821 (俠)   2015-05-15 11:33:00
如果整隻APK kill掉再打開會正常嘛?
作者: Ferich (純粹的透明)   2015-05-15 11:53:00
正常,重點是 change locale 後 重新長出的activityresource 的路徑不會轉換... 重開 是沒問題的
作者: erttyy8821 (俠)   2015-05-15 12:03:00
那我猜是memory的關係 可能要從flow下手
作者: zxc190 (卡卡)   2015-05-15 12:05:00
有遇過sharepreference忘了commit 所以一直抓到上一次的
作者: erttyy8821 (俠)   2015-05-15 12:05:00
跟finish()有關 研究一下
作者: Ferich (純粹的透明)   2015-05-15 12:10:00
zxc大 是某些手機就是無法切換 但是string的部分都正常erttyy大 原本不是用finish 是call static function去set是無法作用的... 這些方法在我的 oneplusone都是正常的
作者: zxc190 (卡卡)   2015-05-15 12:20:00
還是圖片太大顯示不出來@@?或者是那台手機不是drawable-xdhpi 所以一直抓預設的
作者: erttyy8821 (俠)   2015-05-15 12:22:00
我的意思是你activity的資料都還是keep在舊資料你的敘述是A->B->A 所以有可能回到A的時候其實你的A只是推向了後台,而不是整個重置可以先檢查看看是不是因為這樣導致資料還是上一個語係我猜你從onactivityresult下手應該可以找到問題
作者: Ferich (純粹的透明)   2015-05-15 12:47:00
A-B A.finish() B-A B.finish() string的部分都有切換就圖片resource的部分 還是舊的
作者: erttyy8821 (俠)   2015-05-15 12:54:00
public void finish (): Call this when youractivity is done and "should" be closed.查一下是不是真的關閉了
作者: Ferich (純粹的透明)   2015-05-15 13:16:00
我是使用 按實體 back鍵 他會退回到桌面的方式測試的我剛查過了 有確實 finish掉而且 B 設定完後 intent to A,圖片還是原語言 字是對的此時又從 A->B B不錯任何設定 又B->A.. 圖片跟文字都對了
作者: KeySabre (KeySabreur)   2015-05-15 21:05:00
試過從 onConfigurationChanged 下手嗎
作者: charlesdc (MoOn)   2015-05-16 21:13:00
正確做法應該是所有的resource都從getResource取才對
作者: Ferich (純粹的透明)   2015-05-18 10:26:00
我想 我應該是正確的做法 但是某些手機 其實就一台Infocus M210 不適用...

Links booklink

Contact Us: admin [ a t ] ucptt.com