【问题标题】:Titanium Back Button - Always closes my App钛后退按钮 - 总是关闭我的应用程序
【发布时间】:2015-01-20 04:47:55
【问题描述】:

我的应用程序出现了一个新问题,我正在使用 Appcelerator Titanium 进行开发。 我想从我的设备锁定后退按钮,所以每次我使用他时应用程序都不会关闭。只有当我在主菜单时,我才想关闭应用程序。所以这是我的代码:

Ti.UI.currentWindow.addEventListener('android:back',function(){
alert(Ti.App.PositionNow);
if(Ti.App.PositionNow=='0') {
    alert('do quit');
} else if(Ti.App.PositionNow=='1') {
    Ti.App.multi_tableView.addEventListener('click',myfunction);
    var duration = 300;
    var setOldOpacity = Titanium.UI.createAnimation();
    setOldOpacity.opacity = 1;
    setOldOpacity.zIndex = 1;
    setOldOpacity.duration = duration;

    var setOldBottom = Titanium.UI.createAnimation();
    setOldBottom.bottom = 0;
    setOldBottom.duration = duration;

    var setOldTop = Titanium.UI.createAnimation();
    setOldTop.top = 0;
    setOldTop.duration = duration;

    var animationHandler2 = function() {
           setOldTop.removeEventListener('complete',animationHandler2);
           Ti.App.multi_view_first.animate(setOldTop);
           Ti.App.multi_view_second.animate(setOldBottom);
           Ti.App.multi_tableView.animate(setOldOpacity);
        };
    setOldTop.addEventListener('complete',animationHandler2);
    Ti.App.multi_view_first.animate(setOldTop);
    Ti.App.multi_view_second.animate(setOldBottom);
    Ti.App.multi_tableView.animate(setOldOpacity);
    alert('hallo1');
    Ti.App.PositionNow = 0;
}
return false;
});

我有一个变量,我在其中从菜单的层次结构中跟踪用户的位置。所以应用应该只在仓位为“0”时关闭。

如果位置是“1”,应该有一个动画,所以这是可行的,但是在动画期间,应用程序会立即关闭。

窗口的代码是这样的:

Ti.App.hs_win = Ti.UI.createWindow({
   url: '/sites/homescreen/index.js',
   navBarHidden: true,
   fullscreen: true,
   modal:true,
   theme: "Theme.Titanium",
   orientationModes: [Ti.UI.PORTRAIT]
});

【问题讨论】:

  • 在 appcelerator 论坛上查看此帖子:developer.appcelerator.com/question/159538/android-back-button。对于基本的后退导航,您不需要覆盖后退事件。他们建议使用 exitOnClose="true"
  • 所以这行得通,当我按下后退按钮时窗口没有关闭,但现在还有另一个问题,我的“后退动画”现在不起作用。当我按下后退按钮时,窗口似乎已清除完毕。
  • 好的,这是答案的一部分!非常感谢您的宝贵时间!

标签: javascript android titanium appcelerator


【解决方案1】:

您正在监视的事件 android:back 已弃用。请使用androidback事件。

第二步是在事件处理程序链中进一步阻止事件冒泡。为此,您需要取消活动:

Ti.UI.currentWindow.addEventListener('androidback',function(event){
      event.cancelBubble = true;
}

您还必须修改您的窗口并将exitOnClose 属性设置为false

【讨论】:

  • 那行不通。如果我尝试您的示例,应用程序会立即关闭,而无需执行动画或其他任何操作。
  • 好的,现在它像另一个一样工作了。当我按下后退按钮时,我只能看到启动画面...
  • 好的,现在它可以工作了,我看到我在另一个文件中(我已经将每个窗口放在一个文件中)Ti.UI.currentWindow 上的相同事件监听器......我已经删除第二个,现在它可以工作了......该死......它与javascript不同,只是大多数时候,但并非一切都一样......;)
猜你喜欢
  • 2016-08-31
  • 2017-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-16
相关资源
最近更新 更多