创建后激活导致工具栏在零件堆栈中丢失

我有一个包含两个部分的零件堆栈。第二部分有一个ToolBar带有Direct Tool Item图标的图标。

我想初始化第二部分而不显示它,因为有些代码需要立即执行,而不是在聚焦时。

为此,我调用:

partService.showPart(secondPartID, PartState.CREATE);

在此之后我打电话:

partService.showPart(secondPartID, PartState.ACTIVATE);

然后,这会按预期将第二个视图带到前面,但工具栏丢失了。

我已经尝试获取部件的工具栏并获取小部件,但小部件为空。

如果我切换到第一部分(通过单击选项卡)然后切换回第二部分,则工具栏已成功创建。

我想知道我是否错误地使用了CREATE/ACTIVATE调用,因为我得到的行为很奇怪。

是什么原因造成的?


慕沐林林
浏览 131回答 1
1回答

慕妹3242003

通过将其包装在 an 中,async它可以修复它。我已经尝试了多种变体来解决这个问题,这是唯一可以解决的问题。Display.getDefault().asyncExec(() -> partService.showPart(id, PartState.ACTIVATE));一定是事情还没有初始化/准备好导致工具栏无法添加。通过使用异步,它必须等待直到它准备好显示工具栏。如果有人能够提供任何额外信息来说明为什么会修复它,我会更新答案。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java