看板 AndroidDev 關於我們 聯絡資訊
請問 如何切換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
Ferich: btw A-B 也是 startintent 過去的 然後 A finish() 05/15 10:33
zxc190: 不能換的那個是不是5.0的版本? 05/15 10:38
Ferich: 4.4.4 05/15 11:13
Ferich: 5.0 也有這個問題... 05/15 11:23
erttyy8821: 如果整隻APK kill掉再打開會正常嘛? 05/15 11:33
Ferich: 正常,重點是 change locale 後 重新長出的activity 05/15 11:53
Ferich: resource 的路徑不會轉換... 重開 是沒問題的 05/15 11:53
erttyy8821: 那我猜是memory的關係 可能要從flow下手 05/15 12:03
zxc190: 有遇過sharepreference忘了commit 所以一直抓到上一次的 05/15 12:05
erttyy8821: 跟finish()有關 研究一下 05/15 12:05
Ferich: zxc大 是某些手機就是無法切換 但是string的部分都正常 05/15 12:10
Ferich: erttyy大 原本不是用finish 是call static function去set 05/15 12:10
Ferich: 是無法作用的... 這些方法在我的 oneplusone都是正常的 05/15 12:11
zxc190: 還是圖片太大顯示不出來@@? 05/15 12:20
zxc190: 或者是那台手機不是drawable-xdhpi 所以一直抓預設的 05/15 12:21
erttyy8821: 我的意思是你activity的資料都還是keep在舊資料 05/15 12:22
erttyy8821: 你的敘述是A->B->A 所以有可能回到A的時候其實 05/15 12:24
erttyy8821: 你的A只是推向了後台,而不是整個重置 05/15 12:25
erttyy8821: 可以先檢查看看是不是因為這樣導致資料還是上一個語係 05/15 12:25
erttyy8821: 我猜你從onactivityresult下手應該可以找到問題 05/15 12:27
Ferich: A-B A.finish() B-A B.finish() string的部分都有切換 05/15 12:47
Ferich: 就圖片resource的部分 還是舊的 05/15 12:47
erttyy8821: public void finish (): Call this when your 05/15 12:54
erttyy8821: activity is done and "should" be closed. 05/15 12:54
erttyy8821: 查一下是不是真的關閉了 05/15 12:58
Ferich: 我是使用 按實體 back鍵 他會退回到桌面的方式測試的 05/15 13:16
Ferich: 我剛查過了 有確實 finish掉 05/15 13:22
Ferich: 而且 B 設定完後 intent to A,圖片還是原語言 字是對的 05/15 13:48
Ferich: 此時又從 A->B B不錯任何設定 又B->A.. 圖片跟文字都對了 05/15 13:49
KeySabre: 試過從 onConfigurationChanged 下手嗎 05/15 21:05
charlesdc: 正確做法應該是所有的resource都從getResource取才對 05/16 21:13
Ferich: 我想 我應該是正確的做法 但是某些手機 其實就一台 05/18 10:26
Ferich: Infocus M210 不適用... 05/18 10:26