Android Appcelerator 中的后退按钮处理

Android Back Button Handling In Appcelerator

我想在 appcelerator 中为父 window 及其后续子视图集成 android 后退按钮功能。我在整个项目中只有一个 window 。其他屏幕是此父级 window 的子级。有什么建议吗?

有 2 个案例您可能感兴趣:

  1. 覆盖按下后退按钮的默认行为。

    $.window.onBack = function () { // run your code like change views or whatever you like };

    • 使用Window's onBack property附加后退按钮回调。
    • 它将让您控制在 window 上按下后退按钮时会发生什么。
  2. 如果您只想听后退按钮按下以及后退按钮按下的默认行为,请使用 Window's androidback event

    $.window.addEventListener('androidback', function (e){});

    • 请注意,此方法仍会关闭您正在使用的 window,但会允许您在按下后退按钮时 运行 一些代码。

我相信您正在寻找方法 1。

注意:方法一仅适用于或> SDK 5.5.1.GA。这是 6.0.0.GA 中的重大更改。所以请正确阅读文档并对它们的功能进行一些测试。

添加了代码示例以模拟后退按钮功能。

Alloy.Globals.trackingArray = [];

function addNewView(_controllerName, _args) {
    var newView = Alloy.createController(_controllerName, _args).getView();
    $.window.add(newView);

    // add new view in tracking array.
    Alloy.Globals.trackingArray.push(_controllerName);
}

// now use something like this whenever you remove any view using backpress
function onBackPress() {
    // remove lastly added view
    Alloy.Globals.trackingArray.pop(_controllerName);

    // add last opened view to simulate back button feature
    var lastAddedView = Alloy.Globals.trackingArray[Alloy.Globals.trackingArray.length - 1];

    var tempView = Alloy.createController(lastAddedView).getView();

    $.window.add(tempView);
}

这是您如何管理此功能的基础。但请注意这里的一点,您需要注意管理在创建新视图或控制器时传递给的参数。有多种方法可以做到这一点,这取决于您的编码风格。 :)