#html #blackberry #menu #blackberry-webworks #blackberry-os6
#HTML #ежевика #меню #blackberry-webworks #blackberry-os6
Вопрос:
Я новичок в разработке BlackBerry, годами разрабатывал приложения для iPhone.
Я пытаюсь создать простое меню, подобное следующему, вызываемое при загрузке:
function initMenus() {
var item = new blackberry.ui.menu.MenuItem(false, 1, "Save", saveMe);
var item2 = new blackberry.ui.menu.MenuItem(false, 2, "Load", loadMe);
blackberry.ui.menu.addMenuItem(item);
blackberry.ui.menu.addMenuItem(item2);
}
function saveMe()
{
localStorage.pixels = window.pageYOffset;
}
function loadMe()
{
window.scrollTo(0, localStorage.pixels);
}
В файле конфигурации у меня есть:
<?xml version="1.0" encoding="utf-8"?>
<widget xmlns:rim="http://www.blackberry.com/ns/widgets" version="1.0.0" rim:header="RIM-Widget:rim/widget" xmlns="http://www.w3.org/ns/widgets">
<name>007</name>
<description>Sample Application created using the BlackBerry Widget SDK that demonstrates how to use the Menu and MenuItem objects found within the Widget API collection.</description>
<author href="http://na.blackberry.com/eng/developers/browserdev/widgetsdk.jsp" rim:copyright="2010" email="astanley@rim.com">Adam Stanley</author>
<content src="index.html" />
<feature id="blackberry.ui.menu" required="true" version="1.0.0.0" />
<rim:loadingScreen backgroundColor="#c0c0c0" />
<license href="" />
</widget>
Установив пакет WebWorks last SDK, я могу попробовать использовать эмуляторы семейств OS5 и OS6.
Теперь с симуляторами OS6 все в порядке. Функции JavaScript вызываются правильно.
В симуляторах OS5 отображаются пункты меню, но как только я нажимаю на них, просто ничего не происходит. Я пробовал также использовать простые оповещения, вместо того чтобы сохранять и загружать данные в localStorage, но функции просто не вызываются после нажатия на пункты меню.
Что я делаю не так?
Я знаю, что существует известная проблема при объявлении blackberry.ui.dialog
и blackberry.ui.menu
в одном приложении, но я просто объявляю blackberry.ui.menu
.
Ответ №1:
Я заметил, что в обеих вызванных функциях вы пытаетесь получить доступ к localStorage. В OS5 обычный HTML5 localStorage не поддерживается, только методы Google Gears. Используете ли вы html5_init.js в вашем проекте? Следуйте этим инструкциям, чтобы добавить его. Это «конвертер» Google Gears в HTML5 для OS5.
Возможно, это не ваша проблема, но вам это все равно понадобится, если вы пишете приложение Webworks, которое будет работать на обеих версиях ОС.
Комментарии:
1. Спасибо, Эндрю, ты был очень добр! Хотя ваш ответ очень, очень важен и на него следует лучше указать в их документации, я действительно не использую HTML5 (я имею в виду, в этом примере да, но на самом деле я могу написать все в этих функциях). Проблема в том, что они просто не вызываются.
2. Итак, вы попробовали, и это не сработало? Я предполагал, что localStorage не существует, поэтому вызовы функции прекратились, когда она попыталась получить доступ к несуществующему объекту. Попробуйте изменить свои функции на что-нибудь простое, например
function saveMe() { alert("Save Menu Item Chosen");}
, чтобы убедиться, что функции пункта меню действительно вызываются.