2017-08-10 5 views
1

アンドロイドデバイスの戻るボタンを押すと、私が現在行っているアクティビティが閉じられます。私はこれが起こらないようにする必要があります。私はここでthis 質問を見つけましたが、そのイベントのためにthisのドキュメントが見つかりました。名前が違うと、同じイベントの第3の名前が見つかりましたhere。私もこのような、同時に、それらのすべてを試してみました:それらのcant catchアンドロイドバックイベント

$.currentWindow.addEventListener("android:back",back); 
$.currentWindow.addEventListener("androidback",back); 
$.currentWindow.addEventListener("windows:back",back); 
$.currentWindow.addEventListener("windowsback",back); 

どれも働いていない、また、私は私がTitanium.UI.currentWindow.addEventListener("evt", callback)を使用する必要がなく、未定義する​​思わ気づきました。私はこのように私のウィンドウを開きます。

var nextWindow = core.createWindow({ 
    controllerName : "restaurantActivity" 
}); 
nextWindow.open(); 

はここで任意の助けが理解されるであろう

function back(e) { 
    e.cancelBubble = true; 
    console.log(e.type); 
    if (Ti.App.pplatillo.length != 0) { 
     console.log("Confirm before exit."); 
     var dialog = Ti.UI.createAlertDialog({ 
      cancel : 1, 
      buttonNames : ["Sí", "No"], 
      message : "Tienes artículos en tu carrito y el pedido no se ha concretado, si sales perderás los artículos. ¿Seguro que desea salir?", 
      title : "Salir" 
     }); 
     dialog.addEventListener("click", function(e) { 
      if (e.index != e.source.cancel) { 
       Ti.App.pplatillo = []; 
       Ti.App.car = 0; 
       Ti.App.totalBill = 0; 
       $.window.close(); 
      } 
     }); 
     dialog.show(); 
    } else { 
     console.log("Just exit :("); 
     $.window.close(); 
    } 
} 

私のコールバック関数です。

答えて

-1

アプリ内で扱うのはどうですか?これを使用する

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
} 
+0

私は何か非常に重要なことを忘れてしまった。私はJavaScriptを使用しています。それはjavascriptの権利ではない? (私は新しいものではありませんが、それは見たことがありません) –

+0

ああ、私のコードはあなたのMainActivityに入れることができます。私は質問があるので、あなたはアプリを持っていて、あなたはwebviewを使っているのですか? –

+0

@SakuraFukuyoshiの技術はチタンです;) –

0

あなたの現在の活動を停止したい場合は、アンドロイドの戻るボタンを押して閉じるべきではありません。だからあなたは上記の "戻る"機能から "$ .window.close()"行を単に削除/コメントしなければなりません。この場合、

$.MyControllerName.addEventListener("android:back", backCallbackFunctionHandler); 

[戻る]ボタンを押すたび、backCallbackFunctionHandler関数が呼び出される取得されます。

おかげで、

+0

これは問題ではありません、私のバック機能はウィンドウを閉じるべきですが、最初に彼は閉じたいかどうかをユーザーに尋ねなければなりません。問題は、関数backは決してイベントによって呼び出されないため、関数自体が決してキャッチされないために発生しないということです。 –

0

次のアプローチを試すことができます。その中に警告ダイアログを表示して、yes/noボタンのクリックを処理して、ウィンドウを閉じるかどうかに必要なアクションを実行できます。

+0

あなたの答えをありがとうが、それは動作しませんでした。 '$ .MyControllerName'は未定義です(明らかに私はコントローラの実際の名前を使用しています)。 –

0

今後の参考として、私はこの問題を解決しました。私が何をしたか

、私はそれを開く前に、それを開くビューのビューにイベントリスナーを追加しました:

var nextWindow = core.createWindow({ 
    controllerName : "restaurantActivity" 
}); 

nextWindow.addEventListener("android:back",back); 

nextWindow.open(); 

私も同じファイルにコールバック関数backを入れていました。