从设备更改深色/浅色主题不应重新创建 Activity

问题描述

我第一次在我的应用程序中实现了一个深色/浅色主题。我成功地改变了主题。在我的应用程序菜单中,我有一个切换按钮来更改深色/浅色主题效果很好。更改主题后,我的所有数据都丢失了,应用程序又重新创建了。我觉得哪个没问题。

我采用以下方式实现:

   <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">

我为深色/浅色主题创建了 value-night、drawable-night、colors-night 文件夹。

在切换按钮上,我调用以下代码

    if(isChecked) {
        AppCompatDelegate.setDefaultNightMode(
                AppCompatDelegate.MODE_NIGHT_YES);
        getDelegate().applyDayNight();
        //recreate();
    }
    else{
        AppCompatDelegate.setDefaultNightMode(
                AppCompatDelegate.MODE_NIGHT_NO);
        getDelegate().applyDayNight();
        // recreate();

    }

我试图调用 recreate() 函数,但是我的应用程序开始不断闪烁。

我的问题:当用户通知菜单(意味着在应用程序之外)更改主题时,它会重新创建并再次加载数据,这不是我的应用程序的要求。任何外部主题的变化,都不应该影响我内部的应用程序主题。我不确定这是否可能。我尝试添加以下代码 inactivity,但它会停止我的活动以更改主题

       android:configChanges="uiMode"

我正在寻找一个可以在应用程序中更改主题的实时应用程序。任何帮助将不胜感激。

问题:

  1. 更改主题后,如果未保存在本地,所有应用加载的数据都会丢失?
  2. 我上面的切换按钮代码可以在 Android10 以下的设备上使用吗?我测试过,它使设备变黑并且应用不可见。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)