Codename one - 刷新容器组件时的错误

时间:2017-07-13 09:17:55

标签: java containers codenameone

我确实有一个我想单独保存的组件列表,以便操纵它们与GUI隔离(例如以各种方式排序)。 该列表中的组件被添加到一个单独的容器中,该容器在Y轴方向的简单框布局中显示这些元素。

当我刷新容器中的组件(删除所有组件,再次添加列表并重新验证或动画更改)时,我得到容器本身的索引超出范围异常。

    private void refreshComponents() {
        container.removeAll();
        container.animateUnlayout(200, 0, null);

        for (Component cmp : sortedComponentList) {
            container.add(cmp);
        }
        container.animateLayout(150);
    }

不知何故,当调用removeall后跟迭代的Container.add()时,内部arraylist跟踪其组件,搞砸了。有人知道吗?

    //test login with username and empty password
    let app = XCUIApplication()
    let elementsQuery = app.scrollViews.otherElements
    let emailtextfieldElement = elementsQuery.otherElements["emailTextField"]
    let passwordtextfieldElement = elementsQuery.otherElements["passwordTextField"]

    emailtextfieldElement.tap()
    passwordtextfieldElement.tap()
    emailtextfieldElement.tap()
    app.typeText("wayne@test.com")
    passwordtextfieldElement.tap()
    app.buttons["Login - signInButton"].tap()

任何帮助都将不胜感激。

谢谢和最好的问候

1 个答案:

答案 0 :(得分:0)

似乎removeAll没有像add操作那样序列化。通常,当动画正在进行时改变容器的状态时,操作将被序列化"所以它会在动画完成后发生。

请提出相关问题,我们会尝试解决。这可能有点复杂,因为removeAll并非无足轻重。