2016-04-21 39 views
0

我已經使用了Google搜索,但所有有用的文章都描述瞭如何處理NavigationView中的後退按鈕,但我只是使用下面的常見視圖。如何在沒有NavigationView的情況下在sencha touch應用程序中處理返回按鈕?

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' 
      }); 
+0

而是這種方法,你考慮過使用路由?如果您的每個組件都有不同的路由,瀏覽器將自動處理後退按鈕。 – JChap

+0

切換到navigationview應該很容易(導航視圖是帶有卡片佈局的普通容器,以及一些用於彈出/推送視圖的方法),一旦擁有navview,您可以調用pop方法並完成操作。 –

+0

可以使用停用事件將視圖的xtype寫入全局變量。從那裏你可以animateActiveItem – Dinkheller

回答

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(); 
    } 
} 
相關問題