【问题标题】:How Removing window from a tab in titanium?如何从钛标签中移除窗口?
【发布时间】:2012-10-12 09:46:48
【问题描述】:

我正在使用钛加速器在 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

我只是想知道我是否遵循正确的方法?或者有没有更好的方法从标签中删除窗口?

谢谢。

【问题讨论】:

    标签: android titanium titanium-mobile


    【解决方案1】:

    选项卡在 iOS 和 Android 上的行为有很大不同,在 Android 上,选项卡不会维护一堆窗口。调用 open 会打开一个新的重量级窗口,默认情况下会完全覆盖选项卡组。这与 iOS 非常不同,但它适用于 Android 应用程序。用户总是使用返回按钮来关闭窗口并返回到选项卡组。

    这可能是因为您尝试删除该窗口,即使 Android 本身已将其删除。查看 Android 实施说明 of the docs here

    为了彻底消除这个问题,我会直接打开一个模态窗口而不使用 TabGroup,这样会更跨平台:

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

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

    【讨论】:

    • 嗨!谢谢回复。但是错误出现在两个平台上。另外我会选择模态窗口方法。但它违反了要求。
    • 有没有办法让新窗口在标签组中打开而不覆盖标签组?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-20
    • 2012-01-01
    • 2011-03-06
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多