2012-08-03 4 views
10

ナビゲーションビューを使用するとSencha touchで戻るボタンが表示されます。これはかなり上手です。

しかし、ユーザーがデバイスのバックボタンを押した場合はどうなりますか?それは直接アプリケーションを終了しています。私の要求では、アプリケーションを終了してはならず、以前のscreen.Howに戻る必要があります。
sencha touchアプリケーションのデバイス戻るボタンを処理する方法

+0

これは私も直面しています同じ問題があります。すべてのアプリが単一の(必要ではないが)htmlファイルによって駆動されるので、以前に訪れたページの履歴はなく、アプリはバックキーで閉じられる。あなたが使用している場合、phonegapから道があるかもしれません。 – SachinGutte

+0

コードを表示してください。 – hekomobile

+0

アプリケーションは、ここに貼り付ける単一のファイルではありません。すべてのファイルシステムとたくさんのファイルが含まれています – atluriajith

答えて

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ファイルに適用する必要がありますか? –

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 configオブジェクトを経由して、以下の機能を添付

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

これらは次のように定義されています。私はその後、状態は今

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); 
}, 

...のinit関数を経由してポップされたときに実行する機能を付ける

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; 
    }, 

は、タイトルバーの上に戻って押し、history.back()を実行しますこれにより、popstateイベントが発生し、メインビューがポップします。

このアプリケーションを実際のアプリケーションで使用するには、github hereでこの手法を使用した(v。basic!)プロパティーファインダーアプリがあります。

関連する問題