HarmonyOS鸿蒙Next应用开发-修改卡片内容

HarmonyOS鸿蒙Next应用开发-修改卡片内容 卡片内容修改分为三种:

  1. 定时自动修改
    修改配置文件,可以定时刷新其内容

    "scheduledUpdateTime": "10:30"
    

    到点后会自动调用updateFormData(long formId, Object... vars)的内容,自动刷新卡片,我们只需要修改其内容,让卡片刷新成我们想要的页面。

  2. 卡片请求修改
    在WidgetImpl下的onTriggerFormEvent(long formId, String message)方法,会接收卡片传回来的数据,我们可以根据传回来的数据刷新页面。
    Json文件发生消息

    "actions": {
        "getNext": {
            "action": "message",
            "params": {
                "mAction": "next"
            }
        }
    }
    

    后台获取处理

    [@Override](/user/Override)
    public void onTriggerFormEvent(long formId, String message) {
        ZSONObject zsonObject = ZSONObject.stringToZSON(message);
        // Do something here after receive the message from js card
        ZSONObject result = new ZSONObject();
        switch (zsonObject.getString("mAction")) {
            case "next":
                id=(id+1)%4;
                result.put("name", album.getMusicName(id));
                result.put("introduce", album.getIntroduce(id) );
                result.put("imageUri", album.getImageUri(id));
                HiLog.info(TAG, "播放音乐:"+album.getMusicName(id));
                initPlay("next");
                break;
            default:
                break;
        }
        // Update js card
        try {
            if (mContext instanceof Ability) {
                ((Ability) mContext).updateForm(formId, new FormBindingData(result));
            }
        } catch (FormException e) {
            HiLog.error(TAG, e.getMessage());
        }
    }
    
  3. 后台主动修改
    会台处理和卡片请求更新类似,都是要使用updateForm(formId, new FormBindingData(result))方法,但需要知道卡片的formId,可以在卡片创建记录下来。

本文主要根据官方文档学习体验整理


更多关于HarmonyOS鸿蒙Next应用开发-修改卡片内容的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复
  • 定时自动修改
    修改配置文件,可以定时刷新其内容
    “scheduledUpdateTime”: “10:30”
    到点后会自动调用updateFormData(long formId, Object... vars)的内容,自动刷新卡片,我们只需要修改其内容,让卡片刷新成我们想要的页面。

updateFormData没有自动调用,而是abilityonUpdateForm执行了,这个是什么问题呢?

更多关于HarmonyOS鸿蒙Next应用开发-修改卡片内容的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


达成你的目标了没,达成你的效果要求就行了,可能语言描述理解的不一样。

到点后会自动调用updateFormData(long formId, Object... vars)

支持楼主继续划重点,楼主加油~

在HarmonyOS鸿蒙Next中,修改卡片内容通常涉及以下几个步骤:

  1. 定义卡片布局:在resources/base/layout目录下创建XML布局文件,定义卡片的UI结构。

  2. 创建卡片提供者:在src/main/java目录下创建FormAbility类,继承FormProviderAbility,并重写onCreateFormonUpdateForm方法,用于初始化和更新卡片内容。

  3. 绑定数据:在onUpdateForm方法中,通过FormBindingData将数据绑定到卡片布局。

  4. 更新卡片:调用updateForm方法,传入卡片ID和新的FormBindingData,以更新卡片内容。

  5. 测试与发布:在DevEco Studio中运行应用,测试卡片更新功能,确认无误后发布应用。

通过这些步骤,您可以实现HarmonyOS鸿蒙Next应用中的卡片内容修改。

回到顶部