先说结论

  • 奇葩事件,不能死磕,说不定一不小心就解决了。
  • 遇到非常规问题,还是要看看官方API文档,它是你温情的港湾。

背景

奇葩的事情年年有啊,今年特别多。这不今天又遇到了一个奇葩的问题。鸿蒙NextAPP上架AppGallery市场,审核拒了,说是折叠屏手机展开态切换时,输入框内容丢失。

来源是一次审核被拒的情况。刚看到这个问题的时候,我是一脸懵的情况。我手机也没有折叠屏手机,也不能测试。

想到使用云调试机器进行测试,上传包安装之后,试了一下并没有发现这个问题。

审核反馈的信息如下:
测试步骤:
(1)兼容性:应用在折叠屏检测时由展开态切换至右横屏态时存在应用页面输入框内输入内容丢失的问题.
测试环境:Wi-Fi联网、中文环境、Mate X5机型。

img

解决历程

1、无意中发现了眉目

  • 从审核反馈的图上面,也看不到问题。从云调试Mate X5机型机上也没有重现。就在我一头雾水时,就先放一放解决其他问题去了。这是重点(因为没有眉目,然并没有卡在这里。去做其他事情了)。

  • 等我回来后,下意识地把光标放在了哪个出问题的组件上了,就是这个输入框TextInput上,然后出现了系统弹窗,我也是无意识地点击了一个”查看API“

img

  • 在弹窗的API窗口中,我刚好看到了下面这几句。我猜测这应该就是出现问题的原因了。

img

2、确定问题原因

经过思考,再次确认,问题应该就是文档中提到的输入框当前的文本内容,组件刷新时TextInput中的文本内容异常。

3、解决办法

结合文档建议,通过onChange事件将状态变量与文本实时绑定,从API version 10开始,该参数支持$$双向绑定变量,从API version 18开始,该参数支持!!双向绑定变量。这里做了向下兼容,我使用$$进行双向绑定也是可以的。

  • 具体代码
@State userAnswer: string = '';
 TextInput({text: $$this.userAnswer, placeholder: '在此输入你的答案...' })
            .width('100%')
            .height(80)
            .fontSize(14)
            .fontColor(Color.Black)
            .backgroundColor('#F9FAFB')
            .borderRadius(8)
            .padding(12)
            .onChange((value: string) => {
              this.userAnswer = value;
            })
            .margin({ bottom: 20 }) 

思考

鸿蒙在快速发展中,功能也是越来越丰富,这对开发者来说也是好事,也是一种挑战。开发中遇到的各种问题,有时候会卡很久,这个时候是最痛苦的,你可能在网上搜不到答案;请教别人,他们也许并没有遇到你的这种情况。

通过这个鸿蒙的审核问题,教会了我可以先把问题放一放。然后回过头来,再从问题的源头上剖析这个问题,所谓的源头上就是具体是哪个地方,哪个组件的问题,查看对应的API,说不定有意想不到的“顿悟时刻”。

开发也是一种修行,帮助我们提示自己解决问题的能力,并且可以将此能力用在生活中。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐