2011-05-31 102 views
1

我有一个更改主题选项设置我的应用程序的屏幕,并提供一些自定义主题可供选择。如何更改/重置自定义主题从Android代码中的Java代码

首先我相信你不能一次从你的java代码设置主题到整个应用程序(请指导如果有任何方式这样做),这就是为什么我在super.onCreate之前调用setTheme(my_theme) ()在每个应用程序的活动。 现在当用户改变活动时,这只会在重新启动任何活动时反映出来(因为setTheme()在OnCreate()中)。

所以问题是如何让SetTheme()在OnResume()或代码中的任何其他地方工作,因为我想在Activity Stack的前面屏幕上也反映这些更改。

注意,setTheme()之前的setContentView作品()只......

回答

1

呀,为the docs说,你需要设置主题的任何意见被实例化之前,所以看起来你需要重新开始你的整个活动。

有可能是一个更好的办法,而是一个方式,以确保您的活动的onResume()完全重新启动:

finish(); 
startActivity(getIntent()); 

这将回收现有的意图。但是,我会首先查看是否有更简单的方法来确保活动重新启动 - 可能是简单的清单属性。让我们知道你发现了什么。

+0

我正在避免重新启动,因为它会在dat屏幕上丢失我的数据和计算结果。所有我正在寻找的东西是重新布局而不是活动。 – 2011-06-01 04:56:30

+0

下面是一个问题:当您在onResume中设置新主题时,如果您再次暂停并恢复(通过返回到设置并返回),主题是否最终会改变?因为如果不是这样,似乎非常确定您唯一的选择是重新启动活动。 – 2011-06-01 12:21:58

+0

同意你...... Thnk的努力。 – 2011-06-01 14:32:12