android中setTheme中的一个问题

今天发现一个android开发的一个小问题,应该可以算是小BUG,测试环境2.1 SDK Update1

在android程序设计中我们可以更换主题(Theme),有两种方法,一种是在主程序中使用setTheme()函数,传入相应的参数,另一种是在AndroidManifest.xml中直接指定,这里主要讲第一种方法,也是最常用的。

一般来说,对程序外观属性操作的函数都会在onCreate()调用之后被调用,但是这个setTheme()函数有点奇怪,如果,把它放在onCreate()之后调用,它就不会生效(但并不产生任何错误和警告),一定要放在onCreate()之前调用才行,以下是代码片段:

setTheme()放在onCreate()之后,无效
setTheme()放在onCreate()之后,无效


以及style.xml的内容:



我们会发现效果没有出来,setTheme()调用失效:

setTheme失效
setTheme失效


于是查了下资料,论坛上的朋友反映这个问题要用过把setTheme()放在onCreate()之前调用:

setTheme()放在onCreate()之前,有效
setTheme()放在onCreate()之前,有效


以下是运行结果:

setTheme生效
setTheme生效


按照常理来说,setTheme()这种设置属性的函数放在onCreate()之后调用应该没有问题,因为它并不影响程序运行,但是上述这个问题确实存在,原因也不是很清楚。


http://site.douban.com/widget/notes/110027/note/120907913/
posted @ 2011-08-05 10:14  wgw8299  阅读(1987)  评论(0编辑  收藏  举报