7

我有一个活动。在按钮上单击我想更改主题,但是我发现主题只能设置一次,而且在 setContentView 之前也可以设置。重新开始活动不是我的选择。也许使用 attrs 必须解决这个问题。但我不知道如何使用它。请帮忙!!

提前致谢!!

4

1 回答 1

10

不,这是不可能的,来自相关文档

公共无效 setTheme (int resid)

为此上下文设置基本主题。请注意,这应该在上下文中实例化任何视图之前调用(例如,在调用 setContentView(View) 或 inflate(int, ViewGroup) 之前)。

所以你必须setTheme()在调用之前设置主题setContentView(),之后就无法更改它。您唯一的选择是重新创建Activity.


顺便说一句:你说重新创建Activity不是一个选项似乎很奇怪,Activities有一个明确定义的生命周期,通过遵守这个生命周期,应该可以重新创建Activity你或 Android 操作系统想要的频率。事实上,你应该知道,你Activity可以随时被 Android 操作系统杀死和重新创建,这实际上是 Android 的正常和预期行为。因此,重新创建Activity不是一个选项似乎表明您的应用程序设计中存在更深层次的问题,如果不解决,无论如何都会显现出来。

于 2014-08-25T10:20:41.417 回答