我在我的应用程序的设置屏幕中有一个更改主题选项,并提供了一些自定义主题可供选择。
首先,我相信您不能立即从您的 Java 代码为整个应用程序设置主题(如果有任何方法请指导),这就是为什么我在 super.onCreate( ) 在 app 的每个 Activity 中。 现在,当用户更改 Activity 时,这只会在重新启动任何 Activity 时反射(reflect)出来(因为 setTheme() 在 OnCreate() 中)。
所以问题是如何让 SetTheme() 在 OnResume() 或代码中的其他任何地方工作,因为我也想在 Activity Stack 中的先前屏幕上反射(reflect)这些更改。
注意 setTheme() 仅在 setContentVIew() 之前起作用......
最佳答案
是的,如the docs比如,您需要在实例化任何 View 之前设置主题,因此看起来您需要重新启动整个 Activity 。
可能有更好的方法,但有一种方法可以确保您的 Activity 在 onResume() 中完全重启:
finish();
startActivity(getIntent());
这将回收现有的 Intent 。但是,我会首先环顾四周,看看是否有更简单的方法来确保 Activity 重新启动——可能是一个简单的 list 属性。让我们知道您发现了什么。
关于android - 如何在 Android 中从 Java 代码更改/重置自定义主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6191913/