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