[問題] 切換語系 改圖片

看板AndroidDev作者 (純粹的透明)時間10年前 (2015/05/15 10:20), 編輯推噓2(2031)
留言33則, 5人參與, 最新討論串1/1
請問 如何切換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 每一隻手機都可以正常抓到語言設定 請問我是忽略了哪一個部分? 感謝各位開發者看完 落落長的問題 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.141.130.248 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1431656417.A.651.html

05/15 10:33, , 1F
btw A-B 也是 startintent 過去的 然後 A finish()
05/15 10:33, 1F

05/15 10:38, , 2F
不能換的那個是不是5.0的版本?
05/15 10:38, 2F

05/15 11:13, , 3F
4.4.4
05/15 11:13, 3F

05/15 11:23, , 4F
5.0 也有這個問題...
05/15 11:23, 4F

05/15 11:33, , 5F
如果整隻APK kill掉再打開會正常嘛?
05/15 11:33, 5F

05/15 11:53, , 6F
正常,重點是 change locale 後 重新長出的activity
05/15 11:53, 6F

05/15 11:53, , 7F
resource 的路徑不會轉換... 重開 是沒問題的
05/15 11:53, 7F

05/15 12:03, , 8F
那我猜是memory的關係 可能要從flow下手
05/15 12:03, 8F

05/15 12:05, , 9F
有遇過sharepreference忘了commit 所以一直抓到上一次的
05/15 12:05, 9F

05/15 12:05, , 10F
跟finish()有關 研究一下
05/15 12:05, 10F

05/15 12:10, , 11F
zxc大 是某些手機就是無法切換 但是string的部分都正常
05/15 12:10, 11F

05/15 12:10, , 12F
erttyy大 原本不是用finish 是call static function去set
05/15 12:10, 12F

05/15 12:11, , 13F
是無法作用的... 這些方法在我的 oneplusone都是正常的
05/15 12:11, 13F

05/15 12:20, , 14F
還是圖片太大顯示不出來@@?
05/15 12:20, 14F

05/15 12:21, , 15F
或者是那台手機不是drawable-xdhpi 所以一直抓預設的
05/15 12:21, 15F

05/15 12:22, , 16F
我的意思是你activity的資料都還是keep在舊資料
05/15 12:22, 16F

05/15 12:24, , 17F
你的敘述是A->B->A 所以有可能回到A的時候其實
05/15 12:24, 17F

05/15 12:25, , 18F
你的A只是推向了後台,而不是整個重置
05/15 12:25, 18F

05/15 12:25, , 19F
可以先檢查看看是不是因為這樣導致資料還是上一個語係
05/15 12:25, 19F

05/15 12:27, , 20F
我猜你從onactivityresult下手應該可以找到問題
05/15 12:27, 20F

05/15 12:47, , 21F
A-B A.finish() B-A B.finish() string的部分都有切換
05/15 12:47, 21F

05/15 12:47, , 22F
就圖片resource的部分 還是舊的
05/15 12:47, 22F

05/15 12:54, , 23F
public void finish (): Call this when your
05/15 12:54, 23F

05/15 12:54, , 24F
activity is done and "should" be closed.
05/15 12:54, 24F

05/15 12:58, , 25F
查一下是不是真的關閉了
05/15 12:58, 25F

05/15 13:16, , 26F
我是使用 按實體 back鍵 他會退回到桌面的方式測試的
05/15 13:16, 26F

05/15 13:22, , 27F
我剛查過了 有確實 finish掉
05/15 13:22, 27F

05/15 13:48, , 28F
而且 B 設定完後 intent to A,圖片還是原語言 字是對的
05/15 13:48, 28F

05/15 13:49, , 29F
此時又從 A->B B不錯任何設定 又B->A.. 圖片跟文字都對了
05/15 13:49, 29F

05/15 21:05, , 30F
試過從 onConfigurationChanged 下手嗎
05/15 21:05, 30F

05/16 21:13, , 31F
正確做法應該是所有的resource都從getResource取才對
05/16 21:13, 31F

05/18 10:26, , 32F
我想 我應該是正確的做法 但是某些手機 其實就一台
05/18 10:26, 32F

05/18 10:26, , 33F
Infocus M210 不適用...
05/18 10:26, 33F
文章代碼(AID): #1LLLVXPH (AndroidDev)