更改活动主题而不重新创建活动

use*_*627 3 android android-theme declare-styleable

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

提前致谢!!

Xav*_*ler 5

根据相关文档,这是不可能的:

公共无效setTheme(int resid)

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

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


顺便说一句您说重新创建Activity不是一个选项似乎很奇怪,Activities具有明确的生命周期,并且通过遵循此生命周期,应该可以重新创建Activity您或Android OS想要的频率。实际上,您应该知道自己随时Activity可以被Android OS杀死并重新创建,这实际上是Android的正常现象。因此,重新创建Activity不是一种选择,这似乎表明您的应用程序设计中存在一个更深层次的根源问题,如果不解决的话,它仍然会表现出来。