【FAQ】HarmonyOS JavaUI中使用terminate()后重新打开AbilitySlice页面存在缓存

【前言】

同一个Ability下的两个不同的AbilitySlice,官方给的Java UI中是通过present跳转AbilitySlice,使用AbilitySlice.terminate方法关闭Slice,具体可以参考官方给的示例代码(Samples: We provide a series of app samples to help you quickly get familiar with the APIs and app development process of the HarmonyOS SDKs. | 为帮助开发者快速熟悉HarmonyOS SDK所提供的API和应用开发流程,我们提供了一系列的应用示例 - Gitee.com

 

【问题描述】

我们遇到的问题是:两个Slice, A 和 B,B中有一个输入框。从A present 跳转到B以后,修改B中的输入框,然后返回A,重新打开B。这个时候B中的输入框并不是初始化的状态,而是上一次被修改的UI。

cke_455.png

【解决方案】

使用使用LayoutScatter动态解析XML文件, 修改onStart中的代码:

  @Override
    protected void onStart(Intent intent) {
        super.onStart(intent);
//        super.setUIContent(ohos.samples.pageability.ResourceTable.Layout_first_ability_second_slice);//不直接使用layoutRes xml

        super.setUIContent((ComponentContainer) LayoutScatter.getInstance(getContext()).parse(ResourceTable.Layout_first_ability_second_slice, null, false));
//使用LayoutScatter加载xml
        HiLog.error(new HiLogLabel(HiLog.LOG_APP, 0, "MY_TAG"), "%{public}s", data+"");
        initComponents();
        setResult();

    }

欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh

posted @ 2022-12-12 16:31  华为开发者论坛  阅读(36)  评论(0)    收藏  举报