在Android的sencha应用程序中覆盖后退按钮

时间:2014-06-17 10:29:07

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

在Android上使用sencha touch应用程序时,设备后退按钮是否可能完全像原生Andriod应用程序一样? This线程解决了同样的问题。建议的解决方案是

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

    function onBackKeyDown(eve) {

        eve.preventDefault();

        //do something
        alert('back button pressed');

    }
}

但是在这个功能中,我怎样才能进入之前访问过的屏幕?

1 个答案:

答案 0 :(得分:2)

当然,这取决于您的用户界面的构建方式以及视图的连接方式。我能想到的最简单的方法是以某种方式检测页面中是否存在后退按钮并触发点击它。

在我的应用程序中,每个需要处理backbutton事件的视图都有一个cls = 'back'按钮,该按钮实现一个tap监听器,负责返回上一个视图的逻辑。 / p>

关于如何实现这个逻辑:没有魔术棒。如果可以通过一个且仅一个父视图访问特定视图,则可以对其进行硬编码。否则,如果可以从多个视图中获取视图,我将视图控制器的属性保存为对我来自的视图的引用,然后在后退按钮上tap我转向那种观点。

移动到视图的动画通常可以通过Ext.Viewport.animateActiveItem(parentView, {type: 'fade'});获得(但同样取决于您实现视图树的方式)

所以在backbutton的处理程序中,我检查了[cls=back]这样一个按钮(但你也可以检查ui或者你想要的任何东西)并点燃{{1}它上面的事件。 此外,当我检测到我在根视图时,我询问用户是否要退出应用程序,如果是,我致电tap

exit()