关闭钛的多个窗口

时间:2016-03-16 18:22:21

标签: android ios titanium appcelerator appcelerator-titanium

在当前显示的窗口中按下按钮时,我打开一个新窗口。当用户单击后退或android中的后退按钮时,我关闭当前窗口,它工作正常。但是当用户按下应用程序的主页按钮转到第一个窗口时,所有其他添加的窗口将保留在后台,而在android中,如果用户按下手机的后退按钮,应用程序将转到上一个打开的窗口而不是它应该去的地方。

这是我打开一个新窗口的方式:

view.addEventListener('click', function(e) {
    var win = Ti.UI.createWindow({
        url : 'List.js'
    });
    win.open();
});

要关闭我使用的窗口:

Ti.UI.currentWindow.close();

例如我打开了窗口A,B,C,D,然后在D窗口中按下应用程序的主页按钮,我必须转到B窗口。所以我需要关闭C和D窗口,但我现在不知道如何关闭背景中的C窗口。

我没有使用Alloy

1 个答案:

答案 0 :(得分:2)

我认为实现这一目标的一种方法是跟踪打开的窗口。

例如,在alloy.js中,您可以:

Alloy.Globals.openWindows = []

(如果你没有使用Alloy,只需使用其他一些全局变量)

现在您的事件处理程序将如下所示:

view.addEventListener('click', function(e) {
    var win = Ti.UI.createWindow({
        url : 'List.js'
    });
    Alloy.Globals.openWindows.append(win);
    win.open();
});

现在,如果你需要关闭窗口和父窗口,你可以这样做:

Alloy.Globals.openWindows.pop().close()

您可以根据需要多次重复上述行以关闭所需数量的窗口。例如,如果您需要关闭3个父窗口,则可以执行以下操作:

for (var i = 0: i < 3; i++) {
    Alloy.Globals.openWindows.pop().close()
}

如果你需要关闭所有窗口,除了第一个窗口你可以这样做(假设第一个窗口没有添加到openWindows):

while(Alloy.Globals.openWindows.length > 0) {
    Alloy.Globals.openWindows.pop().close()
}