如何让我的应用程序不受主题变化的影响?
How to make my app immune to theme change?
每当更改设备的主题时,都会发生两件事:
- 颜色改变
- activity重新启动
我不希望这些发生。 Stack Overflow 上已经发布的解决方案要么处理第一个问题,要么处理第二个问题。我已经通过删除夜间主题 xml 文件和 Theme.MaterialComponents.Light.DarkActionBar 而不是 DayNight 解决了第一个问题。但是我无法解决第二个问题。 Stack Overflow 上的解决方案是关于我们如何在不重新创建 activity 的情况下更改主题。但我想要的是没有发生。我的 activity 不应该对主题变化做出反应。有什么办法吗?
在您的 Activity 声明的应用程序 AndroidManifest.xml
中。您可以设置 android:configChanges="uiMode"
例如:
<activity
android:name=".MainActivity"
android:configChanges="uiMode"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
每当更改设备的主题时,都会发生两件事:
- 颜色改变
- activity重新启动
我不希望这些发生。 Stack Overflow 上已经发布的解决方案要么处理第一个问题,要么处理第二个问题。我已经通过删除夜间主题 xml 文件和 Theme.MaterialComponents.Light.DarkActionBar 而不是 DayNight 解决了第一个问题。但是我无法解决第二个问题。 Stack Overflow 上的解决方案是关于我们如何在不重新创建 activity 的情况下更改主题。但我想要的是没有发生。我的 activity 不应该对主题变化做出反应。有什么办法吗?
在您的 Activity 声明的应用程序 AndroidManifest.xml
中。您可以设置 android:configChanges="uiMode"
例如:
<activity
android:name=".MainActivity"
android:configChanges="uiMode"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>