【问题标题】:how to change/reset custom theme from Java code in android如何从android中的Java代码更改/重置自定义主题
【发布时间】:2011-09-05 17:19:24
【问题描述】:

我在设置我的应用程序屏幕时有一个更改主题选项,并提供一些自定义主题可供选择。

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

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

请注意,setTheme() 仅在 setContentVIew() 之前有效......

【问题讨论】:

    标签: android


    【解决方案1】:

    是的,正如the docs 所说,您需要在实例化任何视图之前设置主题,所以看起来您需要重新启动整个活动。

    可能有更好的方法,但有一种方法可以确保您的活动在 onResume() 中完全重启:

    finish();
    startActivity(getIntent());
    

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

    【讨论】:

    • 我正在避免重新启动,因为它会丢失我在 dat 屏幕上的数据和计算。我正在寻找的只是重新创建布局而不是活动的东西。
    • 这里有一个问题:当你在onResume中设置新主题时,如果你再次暂停和恢复(比如回到设置然后返回),主题最终会改变吗?因为如果不是这样,您唯一的选择就是重新开始活动似乎很确定。
    • 同意你的看法...感谢您的努力。
    • 不客气。如果这回答了问题,请相应地标记它。
    猜你喜欢
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 2021-09-03
    • 2019-11-17
    • 2020-04-14
    • 1970-01-01
    • 2019-02-06
    • 2019-07-21
    相关资源
    最近更新 更多