BlackBerry 10 Cascades应用程序卡住影响财产

时间:2013-04-15 18:20:26

标签: qml blackberry-10 blackberry-cascades

我遇到了列表/详细信息模式的问题。我有一个Article类,继承自QObject,定义了一些属性(titleupdatedcontent是现在很重要的属性。要填充我的(QML)ListView,我有一个C ++ GroupDataModel,填充了一些Article*。这是我的列表onTriggered

onTriggered: {
    if (indexPath.length > 1) {
        currentArticle = dataModel.data(indexPath);
        var page = articlePageDefinition.createObject();
        nav.push(page)
    }
}

您可以猜到,articlePageDefinition使用较高的currentArticle属性定义了一个页面。

现在,当我显示articlePage一次时,它工作正常。我可以回去,点击相同的列表项,显示相同的Article详细信息,效果很好。但当我选择第二篇文章时,该应用程序会冻结。我可以回到我的导航窗格中,但我不能再单击列表项了。我尝试添加一些日志,onTriggered卡在currentArticle = dataModel.data(indexPath);上。此时,我可以记录dataModel.data(indexPath)的每个属性,没有任何问题。我试图不创建/推送页面,只是影响currentArticle并显示它的一些属性,它也正常工作。我真的不明白我在这里做错了什么,感谢任何帮助。

如果您需要查看更多代码,一切都在这里:https://github.com/Kernald/tt-rss-bb10/tree/e29e3b616aa179dd42f66804ecc20a6a45b6bb22

2 个答案:

答案 0 :(得分:1)

这可能会导致您遇到的问题:

  1. 您创建articlePage并将其数据绑定到“currentArticle”全局变量
  2. 当您返回时,不会删除articlePage。
  3. 您打开同一篇文章的另一个实例。最后一个仍将其数据绑定到同一个currentArticle实例。
  4. 当您返回并单击另一个项目时:上一篇文章仍存在于内存中。它绑定到“currentArticle”。问题是,“currentArticle”的数据不是已改变,而是“currentArticle”引用的对象。那时Qml活页夹就失败了。

答案 1 :(得分:0)

我的应用程序有类似的行为,但如果原因可以相同,我没有检查你的github代码。我想你可以比我更快地验证。
删除和添加具有相同索引的列表项时,代码会被卡住。我删除了一个关于用户操作的条目,并在该位置添加了一个新条目,并且卡住了。这是BB10的一个已知问题,我在这里找到:https://developer.blackberry.com/cascades/download/releasenotes/#known