codenameone - 从哪里调用 Component.deinitialize()?
问题描述
在 iPhone 上,由于 getComponentForm 返回 null(参见下面的堆栈跟踪),我经常在 SwipeableContainer.close() 中出现空指针异常。我认为这意味着 SwipeListener 没有被正确删除,这似乎发生在 SwipeableContainer.deinitialize() 中。但是,我无法弄清楚应该从哪里调用 deinitialize() 所以我不明白我需要做什么来避免这种情况。
有任何想法吗?
[EDT] 12:19:43,5 - Exception: java.lang.NullPointerException - null
java.lang.NullPointerException
at com_codename1_ui_SwipeableContainer.close:199
at com_codename1_ui_SwipeableContainer_SwipeListener.actionPerformed:437
at com_codename1_ui_util_EventDispatcher.fireActionSync:459
at com_codename1_ui_util_EventDispatcher.fireActionEvent:362
at com_codename1_ui_Form.fireReleaseListeners:3770
at com_codename1_ui_Form.pointerReleased:3847
at com_codename1_ui_Component.pointerReleased:4710
at com_codename1_ui_Display.handleEvent:2359
解决方案
删除组件或表单时应调用 deinitialize。但在这种情况下,如果我们有一个包含多个操作的事件链,其中用户操作可以触发关闭和删除,这可能会失败。
解决方法是将第二个操作包装在 acallSerially
中以将其推迟到下一个 EDT 周期,但现在我只是为空指针异常添加了一个修复,close()
因此如果没有 parent,该方法不会失败Form
。
推荐阅读
- python - 无法使用神经实验室训练数据集
- javascript - 我想要使用 Sequelize v5 MySQL 解决锁定行
- ruby-on-rails - NoMethodError:设置中未定义的方法“用户”
- python - 无法加载扩展“commands_files/say”
- swift - 编译失败:参数类型“字符”不符合预期类型“ExpressibleByStringLiteral”
- python - 使用 selenium 和 python 来评论 Instagram 上的帖子,但收到错误“元素不可交互”
- json - 从API返回时如何获取JSON Key的值
- arrays - 有没有可能的方法,通过映射数组并使用从功能组件到类组件的“useEffect”来重写代码?
- javascript - 是否可以以这种方式创建 if 语句?
- r - 访问列表中数据框的元素?