我的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();
}
}
此代码不仅仅是添加一个链接到“addEvent.qml”的“新事件”按钮
但是,如果我删除(或评论)行Actionbar.placement: ActionBarPlacement.OnBar
(在上面的代码中标有HERE
),我只会得到预期的1个按钮。但是这个按钮位于溢出菜单中,而我想要它在底部的ActionBar上。
所有不同版本的按钮完全相同(顺便说一下预期的行为:打开addEvent.qml)。
我已经尝试过:“清洁......”然后“重建”;这没用。我也尝试将actions-array移动到其他地方,因为我认为这可能是在错误的地方,但这也没有帮助。在模拟器上删除应用程序,然后重新安装它。
我也在不同的计算机和其他模拟器上尝试过,因为我认为它可能是我的电脑。但那里我遇到了同样的问题。
我不知道这是不是一个错误,但我想我做错了,因为我在Cascades Development上没有很多经验。我到处寻找,但没有其他人有同样的问题。我没有在真实设备上测试它,因为我还没有BB10设备。
答案 0 :(得分:1)
我在Blackberry Cascades论坛上问了这个问题,因为我认为大多数专家会住在那里。并且显然,他们可以answer我的问题。
显然问题是我使用了qml->setContextProperty("model", model);
在我的C ++代码中。而且我认为这并没有产生太大的影响,所以我把这一行放在了AbstractPane *root = qml->createRootObject<AbstractPane>();
行之后
但显然它确实有所作为,因为那样你就会收到双倍的按钮。
所以这个问题实际上很容易解决,只需在setContextProperty
行之前移动createRootObject
行,一切都解决了。
我使用3个按钮时遇到的问题似乎是我在setContextProperty
行后面有2 createRootObject
行代码。因此,对于每个setContextProperty
行,按钮都是重复的。