我正在使用钛加速器在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
我只是想知道我是否遵循了正确的方法?或者是否有更好的方法从选项卡中删除窗口?
感谢。
答案 0 :(得分:1)
选项卡在iOS和Android上的表现有很大不同,在Android上,该选项卡不会保留一堆窗口。调用open会打开一个新的重量级窗口,默认情况下会完全覆盖选项卡组。这与iOS非常不同,但它适用于Android应用程序。用户始终使用“后退”按钮关闭窗口并返回选项卡组。
可能会发生这种情况,因为您尝试删除该窗口,即使本机Android已将其删除。查看 Android实施说明 of the docs here
为了完全消除这个问题,我只是在不使用TabGroup的情况下打开一个模态窗口,这将是更多的跨平台:
addWindowToTabGroup : function(window) {
window.open({
modal : true,
animated : true
});
}
这将打开一个模式窗口,在两个平台上的行为相同,并且可以通过本机后退按钮功能轻松处理。