在不重新创建活动的情况下更改活动的主题

时间:2014-08-25 10:13:45

标签: android android-theme declare-styleable

我有一项活动。在按钮单击按钮上我想要更改主题,但在任何地方我都发现主题只能设置一次,而且在setContentView之前也是如此。 重启活动对我来说不是一个选择。也许使用attrs必须解决这个问题。但我不知道如何使用它。请帮助!!

提前致谢!!

1 个答案:

答案 0 :(得分:4)

来自the relevant documentation

,这是不可能的
  

public void setTheme(int resid)

     

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

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


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

相关问题