0

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

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

谢谢。

4

1 回答 1

1

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

这可能是因为您试图删除该窗口,即使 Android 本身已经删除了它。在此处查看文档Android 实施说明

为了完全消除这个问题,我只打开一个模式窗口而不使用 TabGroup,这将更加跨平台:

addWindowToTabGroup : function(window) {

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

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

于 2012-10-09T17:32:53.627 回答