9534


cordovaとonsenUIを使ってをangularJSベースでスマホアプリを開発しています。

今回よくあるandroidアプリのように、androidの場合はバックボタンを一回押すと、ダイアログがでてそのダイアログが出ている間に、もう一度バックボタンを押すとアプリが終了するようなものを作りたいと思っています。

以下のようにonsenUIのドキュメント通りに、バックボタンのハンドラー制御は出来て、ダイアログの表示と、自動で消えるまでは出来ました。

HTML

[code]

    <ons-template id="exit.html">
      <ons-dialog cancelable>
        <p translate="MSG.EXIT"></p>
      </ons-dialog>
    </ons-template>
    
[/code]

JS

[code]

    ons.ready(function () {
      ons.setDefaultDeviceBackButtonListener(function () {
        ons.createDialog('exit.html')
            .then(function(dialog) {
                dialog.show();
                var stop;
                stop = $timeout(function() {
                    dialog.hide();
                }, 2000);
            });  
      });                      
    });
    
[/code]

しかし、ダイアログのバックボタンは以下のような形で制御可能だとドキュメントには書いてありますが、上記のような仕組みと組み合わせる方法がわかりません。幾つか考えられるコードを書いてみたのですが、思いついたコードではダイアログ表示時のバックボタンの制御ができませんでした。

[code]

    dialog.getDeviceBackButtonHandler().setListener(function (event) {
        navigator.app.exitApp();
    });
    
[/code]

以上、上記のような終了機能は可能でしょうか？ 可能であればその方法をご教授願えれば幸いです。

よろしくお願いいたします。


CC BY-SA 3.0
2015-04-24T09:47:16.660
9523
2015-04-25T02:05:13.593
2015-04-24T09:52:39.490
9474
9474
question
onsen-ui angularjs cordova
アプリ終了時の制御について


動作確認しておりませんが、以下のようにしてみたらダメでしょうか。

[code]

    ons.ready(function () {
    
      // ダイアログの状態を表すフラグを作成
      var showQuitDialog = false;
    
      ons.setDefaultDeviceBackButtonListener(function () {
    
        // ダイアログが既に表示されていればアプリを終了し
        // 表示されていなければ終了確認のダイアログを表示します。
        if(showQuitDialog){ navigator.app.exitApp(); }
        else {
    
          // 終了確認ダイアログを作成
          ons.createDialog('exit.html').then(function(dialog) {
            dialog.show();
            showQuitDialog = true;  // フラグを立てる
    
            // ２秒間操作がなければダイアログを閉じる
            var stop = $timeout(function() {
              dialog.hide();
              showQuitDialog = false;  // フラグを折る
            }, 2000);
          });  
        }
      });                      
    });
    
[/code]


CC BY-SA 3.0
2015-04-24T18:05:47.907
9534
2015-04-24T18:14:11.477
2015-04-24T18:14:11.477
8351
8351
9523
answer