2017-08-10 47 views
1

当我按下我的android设备上的后退按钮时,它会关闭我目前正在进行的活动。我需要防止这种情况发生。我发现this 问题在这里,我也发现this文档为该事件和命名是不同的,然后我发现第三个名称为同一事件here。我试图与所有的人,甚至在同一时间是这样的:cant catch androidback event

$.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

如果你想停止你的当前活动不应该关闭按下android后退按钮。所以你必须从上面的“返回”函数中删除/注释“$ .window.close()”行。

感谢,

+0

这不是问题,我的后台功能应该关闭窗口,但首先它必须问用户,如果他想关闭。问题是函数返回从不发生,因为它从来没有被事件调用,那是因为事件本身永远不会被捕获。 –

0

你可以试试下面的办法:

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

在这种情况下,只要你按后退按钮时,backCallbackFunctionHandler功能将会得到调用。在里面你可以显示一个警告对话框,并处理是/否按钮的点击来执行所需的操作来关闭或不关闭窗口。

+0

感谢您的回答,但没有奏效。我将'$ .MyControllerName'当作未定义的(显然,我使用的是控制器的实际名称)。 –

0

对于未来的参考,我管理解决了这个问题。

我做什么,这个事件监听器添加到视图在视图中,我打开它之前打开它:

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

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

nextWindow.open(); 

我也不得不把回调函数back在同一个文件。