在科尔多瓦第二次按下按钮后退出应用程序退出

时间:2016-06-29 22:56:34

标签: javascript android cordova

我是Cordoba的新手,现在我正在制作我的第一个CSS-HTML-JS应用程序,仅供学习。我的应用有两个屏幕:

  • 主要人员名单
  • 个人资料

当我使用以下方式调用Android后退按钮时

document.addEventListener('backbutton',backMain,false);

该应用显示主列表。然后我尝试用这个函数替换第一个调用,当按下主列表上的后面时退出。

function backClose (e)
{
    e.preventDefault();

    navigator.notification.confirm(
        'Do you want to close the app?',
        function(rsp)
        {
            if ( rsp == 2 )
            {
                navigator.app.exitApp();
            }else{
                return;
            };
        },
        'Close', 
        'No,Close'
    );
};

document.removeEventListener('backbutton',backMain,false);
document.addEventListener('backbutton',backClose,false);

当我按下后退按钮时,在主列表上让我退出。这很好但是当我在个人资料上按下它时,应用程序会转到main,然后让我退出。

如何设置应用程序以回到主列表时按下配置文件上的后退按钮而不要求退出?

感谢您的帮助。

这是我这款应用的完整javascript代码:

var app = (function() {

    var _timerPage = 0;
    var _page = {};
    var _backMain = function(){};

    function xLoadingIcon (sltr)
    {
        $(sltr).html('<div class="loading-icon"></div>');
    };

    function xPersonsList ()
    {
        var buttons = $('#persons-list-switch'), list = $('#persons-list');

        buttons.find('[rolid]').off('click tap').on('click top',function()
        {
            loadRol( $(this).attr('rolid') );
        });

        loadRol( buttons.find('[rolid]:eq(0)').attr('rolid') );
        document.removeEventListener('backbutton',_backMain,false);
        document.addEventListener('backbutton',backClose,false);

        function backClose (e)
        {
            e.preventDefault();

            navigator.notification.confirm(
                '¿Quieres cerrar la aplicación?',
                function(rsp)
                {
                    if ( rsp == 2 )
                    {
                        navigator.app.exitApp();
                    }else{
                        return;
                    };
                },
                'Salir', 
                'No,Cerrar'
            );
        };

        function loadRol (rolid)
        {
            buttons.find('[rolid]').removeClass('active');
            buttons.find('[rolid="' + rolid + '"]').addClass('active');
            xLoadingIcon(list);

            var rqs = {
                exe: 'rol_list',
                rolid: rolid
            };

            utilities.formPost({
                request: rqs,
                success: function(rsp)
                {
                    console.dir();

                    var htm = utilities.templateDOM({
                        template_selector: '#template-persons-list',
                        data: rsp.data
                    });

                    list.html(htm);
                }
            });
        };
    };

    function xPersonInfo (a)
    {
        var box = _page.profile, boxBio = box.find('#person-bio'), boxBack = box.find('#back-button');
        var username = a.getAttribute('username');

        xLoadingIcon(boxBio);
        box.scrollTop(0);

        clearTimeout(_timerPage);
        _timerPage = setTimeout(function()
        {
            _page.persons.css('left','-100%');
            _page.profile.css('left','0%');
        },300);

        var rqs = {
            exe: 'person_info',
            username: username
        };

        utilities.formPost({
            request: rqs,
            success: function(rsp)
            {
                var data = rsp.data;
                data.photo = data.photo ? '<div class="photo"><img src="' + data.photo + '" alt=""></div>' : '';

                var htm = utilities.templateDOM({
                    template_selector: '#template-person-bio',
                    data: data
                });

                boxBio.html(htm);
            }
        });

        boxBack.off('click tap').on('click tap',_backMain);
        document.addEventListener('backbutton',_backMain,false);
    };

    function xIni ()
    {
        document.addEventListener('deviceready',function()
        {
            _page.persons = $('#page-persons');
            _page.profile = $('#page-profile');

            _backMain = function(e)
            {
                e.preventDefault();
                _page.persons.css('left','0%');
                _page.profile.css('left','100%');
            };

            StatusBar.backgroundColorByHexString("#1F303F");
            $('#page-profile').bind('swipeleft swiperight',_backMain);
            xPersonsList();
        },false);
    };

    return {

        ini: xIni,

        personInfo: xPersonInfo

    };
})();

1 个答案:

答案 0 :(得分:0)

我认为你添加_backMain后忘记删除第二个监听器了。

document.addEventListener('backbutton',_backMain,false);
document.removeEventListener('backbutton',backClose,false);