如何从钛中的标签中删除窗口?

时间:2012-10-09 09:11:12

标签: android titanium titanium-mobile

我正在使用钛加速器在ios和android中构建应用程序。

我使用以下代码创建标签组并向其添加标签。

  var localTabGroup = Ti.UI.createTabGroup();

  var planTab = Ti.UI.createTab({
            title : NYC.Common.StringConstant.TAB_TITLE_PLAN,
            icon : NYC.Common.ResourcePathConstant.IMG_TAB_PLAN,
            window : planTabWin

        });

   localTabGroup.open();

并调用以下函数创建一个窗口并将其添加到选项卡

 addWindowToTabGroup : function(window) {

        tabGroup.activeTab.open(window, {
            animated : true
        });
    },

现在,我经常需要从选项卡的堆栈中删除窗口(例如:在android后退按钮或ios导航栏上)

直到现在,我使用window.close()从堆栈中删除窗口。但是,它始终显示警告,如。

[ERROR][TiBaseActivity(  378)] (main) [3320,4640528] Layout cleanup.

[WARN][InputManagerService(   62)] Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@406e4258

我只是想知道我是否遵循了正确的方法?或者是否有更好的方法从选项卡中删除窗口?

感谢。

1 个答案:

答案 0 :(得分:1)

选项卡在iOS和Android上的表现有很大不同,在Android上,该选项卡不会保留一堆窗口。调用open会打开一个新的重量级窗口,默认情况下会完全覆盖选项卡组。这与iOS非常不同,但它适用于Android应用程序。用户始终使用“后退”按钮关闭窗口并返回选项卡组。

可能会发生这种情况,因为您尝试删除该窗口,即使本机Android已将其删除。查看 Android实施说明 of the docs here

为了完全消除这个问题,我只是在不使用TabGroup的情况下打开一个模态窗口,这将是更多的跨平台:

addWindowToTabGroup : function(window) {

    window.open({
        modal : true,
        animated : true
    });
}

这将打开一个模式窗口,在两个平台上的行为相同,并且可以通过本机后退按钮功能轻松处理。