为什么多个Titanium.App.fireEvent()调用不能从Titanium Appcelerator在Android中运行?

时间:2011-06-16 20:22:53

标签: javascript android events titanium appcelerator

在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()创建的tabGroup内部是另一个触发另一个事件的eventlistener

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

并再次在tms.ui.createApplicationTabGroup()函数中调用另一个事件侦听器和fireEvent。

我正在使用Titanium sdk 1.7在Titanium Studio中开发和测试所有代码,使用Mac OS X 10上的连续/每晚构建以及完全更新的Android和iOS sdk。

我的问题仅限于Android内部。移动应用程序在iPhone上完美运行。但是,在Android上(使用2.2 API的模拟器进行测试)我只能触发一个事件。作为一个例子,Android应用程序将接受第一个按钮“点击”事件罚款和激活事件,但然后下一个fireEvent调用(由下一个按钮按下激活)将不会触发。

我知道通过在每个事件监听器中放置一个警报来触发“click”事件,并且它必须是fireEvent调用。

我也知道它与调用的顺序没有任何关系。如果我首先更改了哪个事件,它将始终触发第一个事件,它将始终拒绝后面的fireEvent调用。例如,我更改了哪个tabGroup和窗口在启动时打开,第一个按钮单击并且fireEvent随后工作,即使注册了下一个单击事件,fireEvent调用也不会。

跟踪和控制台没有给出答案或错误代码,除了我在里面放置警报或功能外,我只剩下一个什么都不做的按钮。我试过让函数调用Ti.App.fireEvent()并且它没有改变。

我可能可以通过pastie发布代码,但我需要在发布之前删除重要信息,因此可能需要一天时间。

感谢所有帮助。

0 个答案:

没有答案