2012-08-03 69 views
10

在Sencha touch中,如果我使用導航視圖,我可以返回按鈕。這很好。

但是,如果用戶點擊設備後退按鈕?它直接退出了應用領域。在我的要求中,它不應該退出應用程序,它必須返回到前一個屏幕。我該如何做到這一點?
如何處理sencha touch應用程序上的設備後退按鈕

+0

這是我也面臨着同樣的問題。由於所有應用程序都是由單個(不是必需的)html文件驅動的,因此以前訪問過的頁面沒有歷史記錄,並且應用程序在後退鍵上關閉。如果你正在使用,可能有一種方法來自phonegap。 – SachinGutte 2012-08-03 15:39:27

+0

請顯示您的代碼。 – hekomobile 2012-08-03 17:56:27

+0

它的應用程序不是一個單獨的文件粘貼在這裏。包含所有文件系統和大量文件 – atluriajith 2012-08-06 05:43:44

回答

8

您可以處理硬件後退按鈕這樣的:

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

    function onBackKeyDown(eve) { 

     eve.preventDefault(); 

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

    } 
} 
+0

我應該使用哪個類或JS文件? – 2015-07-07 03:25:27

6

我在歷史記錄支持頁面上沒有找到有用的說明;無論如何,在處理導航視圖時,無論如何都無法使用路線,導航視圖隨時可能有大量視圖。

如果您只是希望後退按鈕能夠正常工作,則可以使用popstatepushstate函數(請參閱https://developer.mozilla.org/en-US/docs/DOM/Manipulating_the_browser_history以供參考)。這個想法就是你push在添加視圖時的狀態,當刪除視圖時pop關閉。 Android手機上的物理後退按鈕或桌面瀏覽器上的後退按鈕有效呼叫history.back();所以你需要做的就是確保按下標題欄上的後退按鈕不變,這是觸發導航視圖彈出的那個按鈕。

要利用它在煎茶觸摸工作,我添加以下到主控制器:

在裁判我有到main視圖(的Ext.navigation.View實例)的引用和其標題欄,從中可以鉤到後退按鈕例如的情況下:

refs: { 
     main: 'mainview', 
     mainTitleBar: 'mainview titlebar', 
}... 

我經由control配置對象附加以下功能..

control: { 
     main: { 
      push: 'onMainPush' 
     }, 
     mainTitleBar: { 
      back: 'onBack' 
     }, 
     ... 

這些被定義爲:

onMainPush: function(view, item) { 
     //do what ever logic you need then.. 
     history.pushState(); 
    }, 
    onBack: function() { 
     history.back(); //will cause the onpopstate event to fire on window.. 
     //prevent back button popping main view directly.. 
     return false; 
    }, 

我然後附上當該狀態通過的init函數彈出以執行功能..

init: function() { 
    /* pop a view when the back button is pressed 
     note: if it's already at the root it's a noop */ 
    var that = this; 
    window.addEventListener('popstate', function() { 
     that.getMain().pop(); 
    }, false); 
}, 

現在,按壓背面上的標題欄,執行history.back() ,這又會觸發popstate事件,然後導致主視圖彈出。

如果你想看到這個工作在一個真實的應用程序,有一個(v。basic!)財產取景器應用程序在github上使用這種技術here