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方法正确监听系统配置变化。

回到顶部