作者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/cn.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