Почему из Titanium Appcelerator в Android не работают несколько вызовов Titanium.App.fireEvent ()? - PullRequest
1 голос
/ 17 июня 2011

В Titanium Appcelerator у меня есть проект, который создает tabGroup и окно через функцию.

Ti.App.addEventListener('startCoSelect', function(e) {
    // store user name and password globally
    // user = e.user;
    // pass = e.pass;
    tabs.close();
    tabs = tms.ui.createCoSelectGroup();
    tabs.open();
});

Ti.App.addEventListener('startAppHome', function(e) {
    tabs.close();
    tabs = tms.ui.createApplicationTabGroup();
    tabs.open();
});

var tabs = tms.security.getPermission();
tabs.open();

Внутри этой функции находится кнопка, для этой кнопки назначен прослушиватель событий, который затем вызывает Ti.App.fireEvent ('startCoSelect').

    btnLogin.addEventListener("click", function (e) {
        Ti.App.fireEvent('startCoSelect');
    });

Из этого прослушивателя событий вызывается функция, которая открывает новую группу вкладок и окно, а также закрывает предыдущую группу вкладок, как показано выше. Внутри tabGroup, созданной tms.ui.createCoSelectGroup (), находится другой обработчик событий, который запускает другое событие

    btnSelect.addEventListener("click", function (e) {
        Ti.App.fireEvent('startAppHome');
    });

и еще раз другой прослушиватель событий и вызов fireEvent в функции tms.ui.createApplicationTabGroup ().

Я разрабатываю и тестирую весь код в Titanium Studio с помощью Titanium SDK 1.7, используя непрерывные / ночные сборки как на Mac OS X 10, так и на полностью обновленном Android и iOS SDK.

Моя проблема только в Android. Мобильное приложение работает отлично, как и на iPhone. Однако на Android (тестирование с эмулятором 2.2 API) я могу запустить только одно событие. В качестве примера, приложение для андроида примет первое событие нажатия кнопки «отлично» и запустит событие, но затем не будет запущен следующий вызов fireEvent (активированный следующим нажатием кнопки).

Я знаю, что событие "click" запускается, помещая оповещение внутри каждого прослушивателя событий, и что это должен быть вызов fireEvent.

Я также знаю, что это не имеет никакого отношения к порядку звонков. Если я изменю, какое событие запускается первым, оно всегда будет запускать первое и всегда будет отклонять последующие вызовы fireEvent. Примером является то, что я изменил, какие tabGroup и окно были открыты при запуске и первые нажатия кнопки и fireEvent работают затем после этого, даже несмотря на то, что регистрируются события следующего нажатия, вызов fireEvent - нет.

Трассировка и консоль не дают ответов или кодов ошибок, и у меня остается только кнопка, которая ничего не делает, если я не помещу предупреждение или функцию внутри. Я попытался вызвать функцию Ti.App.fireEvent (), и она не изменилась.

Возможно, я смогу опубликовать код с помощью pastie, но мне нужно удалить важную информацию перед публикацией, так что это может занять день.

Вся помощь приветствуется.

...