1

我的黑莓瀑布應用程序出現奇怪的問題。我試圖添加一個按鈕到操作欄(在應用程序的底部)。但是,當我在Blackberry 10 Dev Alpha模擬器(BB10_0_10.261)中測試它時,似乎我有2個(有時是3個)同一個按鈕版本,如下圖所示。雖然通常應該只有1個?Blackberry Cascades中的複製操作欄按鈕

Too many buttons

所以我要做的就是添加一個按鈕,我在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)。

我已經嘗試過:「清理..」,然後「重建」;這沒有奏效。我還試圖將行動陣列移到其他地方,因爲我認爲這可能是在錯誤的地方,但這也沒有幫助。刪除模擬器上的應用程序,然後重新安裝。

我也試過它在不同的計算機和其他模擬器,因爲我認爲它可能是我的電腦。但我在那裏遇到了同樣的問題。

我不知道這是否是一個錯誤,但我想我做錯了什麼,因爲我沒有很多Cascades發展的經驗。我到處尋找,但沒有任何其他人有同樣的問題。我還沒有在真實設備上測試過它,因爲我還沒有BB10設備。

回答

1

我在Blackberry Cascades論壇上問過這個問題,因爲我認爲大多數專家都會住在那裏。並且在表面上,他們可以answer我的問題。

顯然問題是我在我的C++代碼中使用了qml->setContextProperty("model", model); 。我認爲這並沒有太大的區別,所以我把這條線放在線後面AbstractPane *root = qml->createRootObject<AbstractPane>(); 但是很明顯它確實有所作爲,因爲那樣你會收到你的按鈕兩倍。

所以這個問題其實很簡單,只要在createRootObject行之前移動setContextProperty行,一切都解決了。

而我有3個按鈕的問題似乎是我有2 setContextProperty代碼行,在createRootObject行後面。因此,對於每個setContextProperty行,按鈕都是重複的。