android - 如何在 Android 中从 Java 代码更改/重置自定义主题

标签 android

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

首先,我相信您不能立即从您的 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/

相关文章:

java - 我们可以在Java中的while循环中定义一个变量吗?

android - 当我从对话框 fragment 返回并且编​​辑文本获得焦点时,不会调用 onBackPressed

java - 如何处理大量 if 语句

android - MaterialToggleButton 的选定颜色为纯色

Android 从谷歌账户中检索用户国家

android - android 4.0以上版本如何获取SIM卡中存储的联系人类型?

Android ListView 选中项高亮显示

android - 销毁 Activity 时在订阅外注销 BroadcastReceiver

java - 让敌人跟随检查站

android - 如何在 viewpager 中重新创建 fragment