1

У меня возникла странная проблема с моим приложением Blackberry Cascades. Я пытался добавить кнопку в панель действий (внизу приложения). Но когда я тестирую его в Blackberry 10 Dev Alpha simulator (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, потому что я думал, что большинство экспертов будут там жить. И apparantly, они могли answer мой вопрос.

Видимо проблема заключалась в том, что я использовал qml->setContextProperty("model", model); в моем коде на C++. И я подумал, что это не имеет большого значения, поэтому я поместил эту строку за линию AbstractPane *root = qml->createRootObject<AbstractPane>(); Но при этом она действительно имеет значение, потому что тогда вы получите двойные кнопки.

Так что эту проблему на самом деле довольно просто решить, когда вы ее знаете, просто переместите линии setContextProperty до линии createRootObject и все будет решено.

И проблема у меня была с 3 кнопками, похоже, что у меня были 2 setContextProperty строки кода, за линией createRootObject. Поэтому для каждой линии setContextProperty кнопки были дублированы.