HarmonyOS鸿蒙Next中如何解决主动设置颜色模式后,无法监听到模式切换的问题
HarmonyOS鸿蒙Next中如何解决主动设置颜色模式后,无法监听到模式切换的问题
【问题现象】
在应用初始化的时候,主动设置了colorMode之后。修改系统的深色模式后在onConfigurationUpdate(newConfig: Configuration)方法中无法监听到回调。
问题demo代码如下:
onConfigurationUpdate(newConfig:
LogUtils.debug(`Ability onConfigurationUpdate>>>>>>>1111-${newConfig.colorMode}`)
if (this.context.config.colorMode == newConfig.colorMode) {
return
}
this.handleSKinType(newConfig)
}
【解决方案】
步骤一:直接给在EntryAbility里面编写onConfigurationUpdate()设置模式。
// EntryAbility.ets
onConfigurationUpdate(newConfig: Configuration): void {
promptAction.showToast({
message: "深色模式"
})
this.context.config = newConfig;
console.log(`cc test show 111 ${newConfig.colorMode}`)
}
步骤二:不需要跟随系统变化,那么获取到的colormode为非-1。
// index.ets
let context = getContext(this) as common.UIAbilityContext;
context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_DARK)
步骤三:需要跟随系统变化设置了notset,获取到的colormode值为-1。
// index.ets
context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET)
更多关于HarmonyOS鸿蒙Next中如何解决主动设置颜色模式后,无法监听到模式切换的问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于HarmonyOS鸿蒙Next中如何解决主动设置颜色模式后,无法监听到模式切换的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在EntryAbility
中实现onConfigurationUpdate
方法,并在index.ets
中根据需求调用setColorMode
方法。若需跟随系统变化,使用COLOR_MODE_NOT_SET
;若不跟随,使用COLOR_MODE_DARK
或其他模式。确保onConfigurationUpdate
方法正确监听系统配置变化。