在 main activity 中使用 setTheme 时,setDefaultNightMode 不起作用

setDefaultNightMode not working when using setTheme in main activity

我有一个应用程序,我在我的主(且仅)activity 中强制使用“MODE_NIGHT_NO”,我在 super.onCreate() 之后立即执行此操作。

AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_NO)

现在我在 this guide 之后添加启动画面,基本上:

启动画面有效,但问题是启动画面完成后,主题更改为深色模式。即使 phone 不处于黑暗模式。

我试过这样调用它,但它也不起作用,同样的行为:

override fun onCreate(savedInstanceState: Bundle?) {
    AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_NO)
    setTheme(R.style.AppTheme)
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main_drawer)

我什至尝试删除 values-night\themes.xml 看看会发生什么,但结果相同。 (我已经恢复了上述文件夹)

为什么添加 setTheme(AppTheme) 时 setDefaultNightMode(MODE_NIGHT_NO) 的工作方式不同?

非常感谢任何指导。

这应该可以,但我不知道为什么。我认为这是问题所在 默认 material 设计主题。如果您转到您的主题文件并更改

 <style name="Theme.ContactForm" parent="Theme.MaterialComponents.Light.DarkActionBar">

  <style name="Theme.ContactForm" parent="Theme.AppCompat.Light.DarkActionBar">

这应该可以让我知道这是否可以解决问题。

最后我意识到我在 setTheme() 方法中为 activity 设置了错误的主题。但即使那样,我也不确定为什么它会显示黑暗主题。我现在甚至无法重现这个问题。现在就可以了。