如何在没有NavigationView的情况下处理sencha touch应用程序中的后退按钮?

时间:2016-04-21 14:09:40

标签: javascript android extjs sencha-touch sencha-touch-2

我已经google了,但所有有用的文章都描述了如何处理NavigationView中的后退按钮,但我只是使用如下的常见视图。

Ext.define('emall.view.MyPage', {
    extend: 'Ext.Container',
    alias: 'widget.mypage',

    requires: [
        'emall.view.topplus',
        'Ext.TitleBar',
        'Ext.Button',
        'Ext.Toolbar'
    ],

我对现有应用程序进行了更改,因此无法更改基础架构。 所以我想知道如何处理后退按钮?

我知道下面的方法可以捕获后退按钮事件。(我将以下方法添加到app.js)

if (Ext.os.is('Android')) {
    document.addEventListener("backbutton", Ext.bind(onBackKeyDown, this), false);

    function onBackKeyDown(eve) {

        eve.preventDefault();
        //do something
        alert('back button pressed');
        history.back();  

    }
}

但是我可以在方法 onBackKeyDown 中做些什么?因为无论我在哪个页面点击后退按钮,都会触发此事件。所以我不能像 Ext.Viewport.animateActiveItem(' xxxx')那样转到上一页,因为我不知道我要留下的当前页面。

如果我可以获取当前页面名称,我可以像下面一样处理它。

if(currentpage=='xxx')
            Ext.Viewport.animateActiveItem('profile', {
                type : 'slide',
                direction:'left'
            });

1 个答案:

答案 0 :(得分:0)

使用此代码:

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {if (navigator.userAgent.match("Android"))
{       document.addEventListener("backbutton", onBackKeyDown, true);  }  

}

function onBackKeyDown(e) {
    if (window.location.hash === "#splashviewRoute") {      
        navigator.app.exitApp();
    }   
    else  {
        window.history.back();
    }
}