1

我的 Blackberry Cascades 应用程序有一个奇怪的问题。我试图向操作栏添加一个按钮(在应用程序的底部)。但是,当我在 Blackberry 10 Dev Alpha 模拟器 (BB10_0_10.261) 中对其进行测试时,似乎我有同一个按钮的 2 个(有时是 3 个)版本,如下图所示。虽然通常应该只有 1 个?

按钮太多

所以我要做的是在 QML 中向我的页面添加一个按钮,如下所示:

NavigationPane {
    Page {
        Container {
            layout: StackLayout {
            }
            ListView {
                ...
            }
        }
        actions: [
            ActionItem {
                title: "New Event"
                ActionBar.placement: ActionBarPlacement.OnBar // HERE
                onTriggered: {
                    var page = newEventPage.createObject();
                    navigationPane.push(page);
                }
                attachedObjects: ComponentDefinition {
                    id: newEventPage
                    source: "addEvent.qml"
                }
            }
        ]
    }
    onPopTransitionEnded: {
        page.destroy();
    }
}

这段代码只不过是添加一个按钮“New Event”,它将链接到我的“addEvent.qml”

但是,如果我删除(或注释)该行Actionbar.placement: ActionBarPlacement.OnBar(在上面的代码中标记HERE),我只会得到预期的 1 个按钮。但是这个按钮位于溢出菜单中,而我希望它位于底部的 ActionBar 上。

所有不同版本的按钮都做同样的事情(顺便说一下,预期的行为:打开 addEvent.qml)。

我已经尝试过:“清洁..”然后“重建”;这没有用。我还尝试将动作数组移动到其他地方,因为我认为这可能位于错误的位置,但这也无济于事。删除模拟器上的应用程序,然后重新安装。

我还在另一台计算机和其他模拟器上尝试过,因为我认为它可能是我的计算机。但我在那里遇到了同样的问题。

我不知道这是否是一个错误,但我想我做错了什么,因为我在 Cascades 开发方面没有很多经验。我到处找,但没有其他人有同样的问题。我还没有在真实设备上测试过,因为我还没有 BB10 设备。

4

1 回答 1

1

我在 Blackberry Cascades 论坛上问了这个问题,因为我认为大多数专家都会住在那里。显然,他们可以回答我的问题。

显然问题是我qml->setContextProperty("model", model); 在我的 C++ 代码中使用了。而且我认为这并没有太大的不同,所以我把这条线放在了这条线的后面。AbstractPane *root = qml->createRootObject<AbstractPane>(); 但显然它确实有所作为,因为那样你会收到你的按钮 double 。

所以这个问题其实很容易解决,当你知道它的时候,只需将行移到setContextProperty行之前createRootObject,一切都解决了。

我有 3 个按钮的问题似乎是我有 2setContextProperty行代码,createRootObject在行后面。因此,对于每一setContextProperty行,按钮都是重复的。

于 2013-02-12T09:08:32.357 回答