我的Blackberry Cascades应用程序出现了一个奇怪的问题。我正在尝试添加一个按钮到actionbar (在应用程序的底部)。但当我在黑莓10Dev Alpha模拟器(BB10__10.261)中测试它时,我似乎有两个(有时是三个)版本的同一个按钮,如下图所示。而通常应该只有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“的按钮"New Event”。
但是如果我删除(或注释)行Actionbar.placement: ActionBarPlacement.OnBar (在上面的代码中用HERE标记),我只得到一个按钮。但这个按钮位于溢出菜单中,而我希望它位于底部的ActionBar上。
所有不同版本的按钮都做完全相同的事情(顺便说一句,预期行为:打开addEvent.qml)。
我已经试过了:"Clean..“然后“重建”;这不起作用。我还尝试将操作数组移到其他地方,因为我认为这可能放错了地方,但这也没有帮助。删除模拟器上的应用程序,然后重新安装它。
我还在另一台计算机和其他模拟器上尝试了它,因为我认为它可能是我的计算机。但我在那里也有同样的问题。
我不知道这是不是一个bug,但我猜我做错了什么,因为我在Cascades开发方面没有太多经验。我到处都找过了,但没有其他人有同样的问题。我还没有在真正的设备上测试它,因为我还没有BB10设备。
发布于 2013-02-12 17:08:32
我在Blackberry Cascades论坛上问了这个问题,因为我认为大多数专家都会住在那里。显然,他们可以answer我的问题。
显然,问题是我在C++代码中使用了qml->setContextProperty("model", model);。我认为这没有太大的不同,所以我把这一行放在AbstractPane *root = qml->createRootObject<AbstractPane>();后面,但很明显,它确实有很大的不同,因为这样你就会得到双倍的按钮。
所以这个问题实际上很容易解决,只要将setContextProperty行移动到createRootObject行之前,一切就都解决了。
我有三个按钮的问题,似乎是我有两个setContextProperty代码行,在createRootObject行后面。因此,对于每一条setContextProperty行,按钮都是重复的。
https://stackoverflow.com/questions/14818434
复制相似问题