{ "id": "173082", "key": "TIMOB-26890", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "20432", "name": "Release 8.0.1", "archived": false, "released": true, "releaseDate": "2019-05-15" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2019-04-29T14:43:17.000+0000", "created": "2019-03-05T12:23:44.000+0000", "priority": { "name": "Critical", "id": "1" }, "labels": [ "TabGroup", "android", "engSchedule", "regression" ], "versions": [ { "id": "19882", "name": "Release 8.0.0", "archived": false, "released": true, "releaseDate": "2019-03-14" } ], "issuelinks": [], "assignee": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2019-04-29T14:43:17.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" } ], "description": "*Summary:*\r\nAs of Titanium 8.0.0, a {{TabGroup}} with 4 or more tabs can sometimes crash when switching between tab 1 and 4. This depends on the content within the tab.\r\n\r\nThis is a regression.\r\n\r\n*Steps to reproduce:*\r\n# Build and run the below code on Android.\r\n# Tap on \"Tab 5\".\r\n# Tap on \"Tab 1\".\r\n# Notice the app crashes/hangs.\r\n\r\n{code:javascript}\r\nfunction createDayView(e) {\r\n\tvar dayView = Titanium.UI.createView({\r\n\t\theight: '80dip',\r\n\t\twidth: '66dip',\r\n\t\ttop: '0dip',\r\n\t\tbackgroundColor: '#FFF'\r\n\t});\r\n\tvar boxView = Titanium.UI.createView({\r\n\t\theight: '56dip',\r\n\t\twidth: '56dip',\r\n\t\ttop: '10dip',\r\n\t\tright: '10dip',\r\n\t\ttouchEnabled: false\r\n\t});\r\n\tdayView.add(boxView);\r\n\tvar date = new Date(e.date);\r\n\tvar backgroundView = Ti.UI.createView({\r\n\t\theight: '56dip',\r\n\t\twidth: '56dip',\r\n\t\tborderRadius: '14dip',\r\n\t\tbackgroundColor: '#AAA',\r\n\t\ttouchEnabled: false\r\n\t});\r\n\tboxView.add(backgroundView);\r\n\tvar verticalView = Ti.UI.createView({\r\n\t\theight: Ti.UI.SIZE,\r\n\t\twidth: Ti.UI.SIZE,\r\n\t\tlayout: 'vertical'\r\n\t});\r\n\tboxView.add(verticalView);\r\n\tverticalView.add(Titanium.UI.createLabel({\r\n\t\theight: Ti.UI.SIZE,\r\n\t\twidth: Ti.UI.SIZE,\r\n\t\ttext: date.getDate(),\r\n\t\tellipsize: Titanium.UI.TEXT_ELLIPSIZE_TRUNCATE_END,\r\n\t\ttextAlign: Titanium.UI.TEXT_ALIGNMENT_CENTER,\r\n\t\tverticalAlign: Titanium.UI.TEXT_VERTICAL_ALIGNMENT_CENTER,\r\n\t\tfont: { fontSize: '24sp', fontWeight: 'bold', fontFamily: 'Tahoma' },\r\n\t\tcolor: '#FFF',\r\n\t\ttouchEnabled: false\r\n\t}));\r\n\tverticalView.add(Titanium.UI.createLabel({\r\n\t\theight: Ti.UI.SIZE,\r\n\t\twidth: Ti.UI.SIZE,\r\n\t\ttext: 'OK',\r\n\t\thorizontalWrap: false,\r\n\t\tellipsize: Titanium.UI.TEXT_ELLIPSIZE_TRUNCATE_END,\r\n\t\ttextAlign: Titanium.UI.TEXT_ALIGNMENT_CENTER,\r\n\t\tverticalAlign: Titanium.UI.TEXT_VERTICAL_ALIGNMENT_CENTER,\r\n\t\tfont: { fontSize: '10sp', fontWeight: 'bold', fontFamily: 'Tahoma' },\r\n\t\tcolor: '#FFF',\r\n\t\ttouchEnabled: false\r\n\t}));\r\n\treturn (dayView);\r\n}\r\n\r\nfunction createMenuView(e) {\r\n\tvar menuView = Titanium.UI.createView({\r\n\t\theight: '80dip',\r\n\t\ttop: '0dip',\r\n\t\tbackgroundColor: '#FFF'\r\n\t});\r\n\tvar scrollView = Titanium.UI.createScrollView({\r\n\t\tscrollType: 'horizontal',\r\n\t\tlayout: 'horizontal'\r\n\t});\r\n\tmenuView.add(scrollView);\r\n\tvar dayViewData = [];\r\n\tfor (var i = 0; i < 12; i++) {\r\n\t\tvar date = new Date();\r\n\t\tdate.setDate(date.getDate() + i);\r\n\t\tvar dayView = createDayView({\r\n\t\t\tdate: date\r\n\t\t});\r\n\t\tdayViewData.push(dayView);\r\n\t\tscrollView.add(dayView);\r\n\t}\r\n\treturn (menuView);\r\n}\r\n\r\nfunction createTabView(win) {\r\n\tvar containerView = Titanium.UI.createView({\r\n\t\ttop: '80dip',\r\n\t\tbottom: '0dip',\r\n\t\tbackgroundColor: '#FFF'\r\n\t});\r\n\twin.add(containerView);\r\n\tvar tableData = [];\r\n\tvar menuView = createMenuView();\r\n\twin.add(menuView);\r\n\tvar tableView = Titanium.UI.createTableView({\r\n\t\tbackgroundColor: '#FFF',\r\n\t\tseparatorStyle: Titanium.UI.TABLE_VIEW_SEPARATOR_STYLE_SINGLE_LINE,\r\n\t\ttableSeparatorInsets: { left: '0dip', right: '0dip' }\r\n\t});\r\n\tvar section1 = Ti.UI.createTableViewSection();\r\n\tvar section2 = Ti.UI.createTableViewSection();\r\n\ttableData.push(section1);\r\n\ttableData.push(section2);\r\n\ttableView.data = tableData;\r\n\tcontainerView.add(tableView);\r\n\tvar iconView = Titanium.UI.createView({\r\n\t\theight: '60dip',\r\n\t\twidth: '60dip',\r\n\t\tright: '25dip',\r\n\t\tbottom: '25dip',\r\n\t\tzIndex: 100000\r\n\t});\r\n\ticonView.add(Titanium.UI.createImageView({\r\n\t\theight: '60dip',\r\n\t\twidth: '60dip',\r\n\t\ttouchEnabled: false\r\n\t}));\r\n\twin.add(iconView);\r\n};\r\n\r\nvar window1 = Ti.UI.createWindow();\r\nvar window2 = Ti.UI.createWindow();\r\nvar window3 = Ti.UI.createWindow();\r\nvar window4 = Ti.UI.createWindow();\r\nvar window5 = Ti.UI.createWindow();\r\nvar tab1 = Ti.UI.createTab({\r\n\ttitle: 'Tab 1',\r\n\twindow: window1\r\n});\r\nvar tab2 = Ti.UI.createTab({\r\n\ttitle: 'Tab 2',\r\n\twindow: window2\r\n});\r\nvar tab3 = Ti.UI.createTab({\r\n\ttitle: 'Tab 3',\r\n\twindow: window3\r\n});\r\nvar tab4 = Ti.UI.createTab({\r\n\ttitle: 'Tab 4',\r\n\twindow: window4\r\n});\r\nvar tab5 = Ti.UI.createTab({\r\n\ttitle: 'Tab 5',\r\n\twindow: window5\r\n});\r\nvar tabGroup = Titanium.UI.createTabGroup({\r\n\ttabs: [tab1, tab2, tab3, tab4, tab5]\r\n});\r\ntabGroup.addEventListener('open', function () {\r\n\tcreateTabView(window1);\r\n\tcreateTabView(window2);\r\n\tcreateTabView(window3);\r\n\tcreateTabView(window4);\r\n\tcreateTabView(window5);\r\n});\r\ntabGroup.open();\r\n{code}\r\n\r\n*Result:*\r\n{code:java}\r\n[ERROR] : TiExceptionHandler: (main) [15051,20921] android.view.AbsSavedState$1 cannot be cast to android.widget.AbsListView$SavedState\r\n[ERROR] : TiExceptionHandler:\r\n[ERROR] : TiExceptionHandler: android.widget.AbsListView.onRestoreInstanceState(AbsListView.java:1879)\r\n[ERROR] : TiExceptionHandler: android.view.View.dispatchRestoreInstanceState(View.java:15633)\r\n[ERROR] : TiExceptionHandler: android.view.ViewGroup.dispatchThawSelfOnly(ViewGroup.java:3288)\r\n[ERROR] : TiExceptionHandler: android.widget.AdapterView.dispatchRestoreInstanceState(AdapterView.java:817)\r\n[ERROR] : TiExceptionHandler: android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3274)\r\n[ERROR] : TiExceptionHandler: android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3274)\r\n[ERROR] : TiExceptionHandler: android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3274)\r\n[ERROR] : TiExceptionHandler: android.view.View.restoreHierarchyState(View.java:15611)\r\n[ERROR] : TiExceptionHandler: android.support.v4.app.Fragment.restoreViewState(Fragment.java:415)\r\n[ERROR] : TiExceptionHandler: android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1454)\r\n[ERROR] : TiExceptionHandler: android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1759)\r\n[ERROR] : TiExceptionHandler: android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:792)\r\n[ERROR] : TiExceptionHandler: android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2596)\r\n[ERROR] : TiExceptionHandler: android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2383)\r\n[ERROR] : TiExceptionHandler: android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2338)\r\n[ERROR] : TiExceptionHandler: android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:2215)\r\n[ERROR] : TiExceptionHandler: android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:649)\r\n[ERROR] : TiExceptionHandler: android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:145)\r\n[ERROR] : TiExceptionHandler: android.support.v4.view.ViewPager.populate(ViewPager.java:1238)\r\n[ERROR] : TiExceptionHandler: android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:663)\r\n[ERROR] : TiExceptionHandler: android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:625)\r\n[ERROR] : TiExceptionHandler: android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:617)\r\n[ERROR] : TiExceptionHandler: ti.modules.titanium.ui.widget.tabgroup.TiUIAbstractTabGroup.selectTab(TiUIAbstractTabGroup.java:312)\r\n[ERROR] : TiExceptionHandler: ti.modules.titanium.ui.widget.tabgroup.TiUIBottomNavigationTabGroup.onMenuItemClick(TiUIBottomNavigationTabGroup.java:302)\r\n[ERROR] : TiExceptionHandler: android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:167)\r\n[ERROR] : TiExceptionHandler: android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:973)\r\n[ERROR] : TiExceptionHandler: android.support.design.internal.BottomNavigationMenuView$1.onClick(BottomNavigationMenuView.java:95)\r\n[ERROR] : TiExceptionHandler: android.view.View.performClick(View.java:5609)\r\n[ERROR] : TiExceptionHandler: android.view.View$PerformClick.run(View.java:22259)\r\n[ERROR] : TiExceptionHandler: android.os.Handler.handleCallback(Handler.java:751)\r\n[ERROR] : TiExceptionHandler: android.os.Handler.dispatchMessage(Handler.java:95)\r\n[ERROR] : TiExceptionHandler: android.os.Looper.loop(Looper.java:154)\r\n[ERROR] : TiExceptionHandler: android.app.ActivityThread.main(ActivityThread.java:6077)\r\n[ERROR] : TiExceptionHandler: java.lang.reflect.Method.invoke(Native Method)\r\n[ERROR] : TiExceptionHandler: com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)\r\n[ERROR] : TiExceptionHandler: com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)\r\n{code}\r\n\r\n*Cause:*\r\nThis crash happens due to view ID collision as described by [TIMOB-17089] when a tab is being \"restored\" by the Android OS. Note that the view ID collision has been an issue before 8.0.0. The reason this tab selection crash regression is happening in 8.0.0 is due to the code refactoring where tabs are now implemented via a Java {{ViewPager}} whose default offscreen page limit is set to {{1}}. This means the 8.0.0 {{TabGroup}} is only keep the tab on the left and the right of the current tab in memory. All other tabs are destroyed or are not created in memory until you tap on a tab farther in the group. Previously created destroyed tabs that are later \"restored\" cause the crash shown above.\r\n\r\n*Recommended Solution:*\r\nResolve the [TIMOB-17089] issue by assigned unique IDs to all views to avoid collision.\r\nAlso, we should bump up the {{ViewPager}} limit to a higher value to avoid the tab destroy/restore behavior so that they won't lose their current state.\r\n", "attachment": [], "flagged": false, "summary": "Android: Switch between TabGroup tabs 1 and 4 sometimes crashes the app as of 8.0.0", "creator": { "name": "andreas.pingas", "key": "andreas.pingas", "displayName": "Andreas Pingas", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "andreas.pingas", "key": "andreas.pingas", "displayName": "Andreas Pingas", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "closedSprints": [ { "id": 1124, "state": "closed", "name": "2019 Sprint 8", "startDate": "2019-03-31T18:03:00.000Z", "endDate": "2019-04-12T18:03:00.000Z", "completeDate": "2019-04-12T19:04:50.175Z", "originBoardId": 114 }, { "id": 1128, "state": "closed", "name": "2019 Sprint 9", "startDate": "2019-04-14T19:05:00.000Z", "endDate": "2019-04-26T19:05:00.000Z", "completeDate": "2019-04-26T22:05:13.933Z", "originBoardId": 114 }, { "id": 1129, "state": "closed", "name": "2019 Sprint 10", "startDate": "2019-04-28T22:06:00.000Z", "endDate": "2019-05-17T22:06:00.000Z", "completeDate": "2019-05-20T16:48:42.522Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "446553", "author": { "name": "topener", "key": "topener", "displayName": "Rene Pot", "active": true, "timeZone": "Europe/Berlin" }, "body": "Can you please define \"random changes\" and perhaps deliver a reproducible case we can use to test the crash with?", "updateAuthor": { "name": "topener", "key": "topener", "displayName": "Rene Pot", "active": true, "timeZone": "Europe/Berlin" }, "created": "2019-03-05T16:29:03.000+0000", "updated": "2019-03-05T16:29:03.000+0000" }, { "id": "446558", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "By random changes, do you mean adding/removing tabs from the {{TabGroup}} while it is currently open?\r\n\r\nFrom look at the stack trace, a tab was selected either programmatically or it was tapped on, and then it crashed when Android attempted to restore the selected tab's \"state\". I'm curious if you are \"removing\" tabs dynamically?", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-03-05T20:15:05.000+0000", "updated": "2019-03-05T20:15:05.000+0000" }, { "id": "446561", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Also, what kind of views do you have in your tabs?\r\nFor example, are you displaying a {{ListView}}? {{ti.map}} view?", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-03-05T20:27:37.000+0000", "updated": "2019-03-05T20:27:37.000+0000" }, { "id": "446564", "author": { "name": "andreas.pingas", "key": "andreas.pingas", "displayName": "Andreas Pingas", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Please check the following example.\r\n\r\nFirst click tab 4 and then tab 3\r\n\r\n\r\n{code:java}\r\n\r\n\r\nfunction createDayView(e) {\r\n\r\n\tvar dayView = Titanium.UI.createView({\r\n\t\theight:'80dip',\r\n\t\twidth:'66dip',\r\n\t\ttop:'0dip',\r\n\t\tbackgroundColor:'#FFF'\r\n\t});\r\n\t\r\n\tvar boxView = Titanium.UI.createView({\r\n\t\theight:'56dip',\r\n\t\twidth:'56dip',\r\n\t\ttop:'10dip',\r\n\t\tright:'10dip',\r\n\t\ttouchEnabled:false\r\n\t});\r\n\t\r\n\tdayView.add(boxView);\r\n\r\n\tvar date = new Date(e.date);\r\n\r\n\tvar backgroundView = Ti.UI.createView({\r\n\t\theight:'56dip',\r\n\t\twidth:'56dip',\r\n\t\tborderRadius:'14dip',\r\n\t\tbackgroundColor:'#AAA',\r\n\t\ttouchEnabled:false\r\n\t});\r\n\t\r\n\tboxView.add(backgroundView);\r\n\r\n\tvar verticalView = Ti.UI.createView({\r\n\t\theight:Ti.UI.SIZE,\r\n\t\twidth:Ti.UI.SIZE,\r\n\t\tlayout:'vertical'\r\n\t});\r\n\t\r\n\tboxView.add(verticalView);\r\n\t\r\n\tverticalView.add(Titanium.UI.createLabel({\r\n\t\theight:Ti.UI.SIZE,\r\n\t\twidth:Ti.UI.SIZE,\r\n\t\ttext:date.getDate(),\r\n\t\tellipsize:Titanium.UI.TEXT_ELLIPSIZE_TRUNCATE_END,\r\n\t\ttextAlign:Titanium.UI.TEXT_ALIGNMENT_CENTER,\t\r\n\t\tverticalAlign:Titanium.UI.TEXT_VERTICAL_ALIGNMENT_CENTER,\r\n\t\tfont:{fontSize:'24sp', fontWeight:'bold', fontFamily:'Tahoma'},\r\n\t\tcolor:'#FFF',\r\n\t\ttouchEnabled:false\r\n\t}));\r\n\t\r\n\tverticalView.add(Titanium.UI.createLabel({\r\n\t\theight:Ti.UI.SIZE,\r\n\t\twidth:Ti.UI.SIZE,\r\n\t\ttext:'OK',\r\n\t\thorizontalWrap:false,\r\n\t\tellipsize:Titanium.UI.TEXT_ELLIPSIZE_TRUNCATE_END,\r\n\t\ttextAlign:Titanium.UI.TEXT_ALIGNMENT_CENTER,\t\r\n\t\tverticalAlign:Titanium.UI.TEXT_VERTICAL_ALIGNMENT_CENTER,\r\n\t\tfont:{fontSize:'10sp', fontWeight:'bold', fontFamily:'Tahoma'},\r\n\t\tcolor:'#FFF',\r\n\t\ttouchEnabled:false\r\n\t}));\r\n\t\r\n\treturn(dayView);\r\n}\r\n\r\nfunction createMenuView(e) {\r\n\t\t\r\n\tvar menuView = Titanium.UI.createView({\r\n\t\theight:'80dip',\r\n\t\ttop:'0dip',\r\n\t\tbackgroundColor:'#FFF'\r\n\t});\r\n\t\t\r\n\tvar scrollView = Titanium.UI.createScrollView({\r\n\t\tscrollType:'horizontal',\r\n\t\tlayout:'horizontal'\r\n\t});\r\n\t\r\n\tmenuView.add(scrollView);\r\n\t\r\n\tvar dayViewData = [];\r\n\r\n\tfor (var i=0; i<12; i++) {\r\n\t\t\r\n\t \tvar date = new Date();\r\n\t\tdate.setDate(date.getDate() + i);\r\n\r\n\t\tvar dayView = createDayView({\r\n\t\t\tdate:date\r\n\t\t});\r\n\r\n\t\tdayViewData.push(dayView);\r\n\t\t\t\t\r\n\t\tscrollView.add(dayView);\r\n\t\t\r\n\t}\r\n\t\t\t\r\n\treturn(menuView);\r\n}\r\n\r\nfunction createTabView(win) {\r\n\r\n\tvar containerView = Titanium.UI.createView({\r\n\t\ttop:'80dip',\r\n\t\tbottom:'0dip',\r\n\t\tbackgroundColor:'#FFF'\r\n\t});\r\n\t\r\n\twin.add(containerView);\r\n\t\r\n\tvar tableData = [];\r\n\t\r\n\tvar menuView = createMenuView();\r\n\t\r\n\twin.add(menuView);\r\n\t\t\t\r\n\tvar tableView = Titanium.UI.createTableView({\r\n\t\tbackgroundColor:'#FFF',\r\n\t\tseparatorStyle:Titanium.UI.TABLE_VIEW_SEPARATOR_STYLE_SINGLE_LINE,\r\n\t\ttableSeparatorInsets:{left:'0dip', right:'0dip'}\r\n\t});\r\n\t\r\n\tvar section1 = Ti.UI.createTableViewSection();\r\n\tvar section2 = Ti.UI.createTableViewSection();\r\n\r\n\ttableData.push(section1);\r\n\ttableData.push(section2);\r\n\t\r\n\ttableView.data = tableData;\r\n\t\r\n\tcontainerView.add(tableView);\r\n\t\r\n\tvar iconView = Titanium.UI.createView({\r\n\t\theight:'60dip',\r\n\t\twidth:'60dip',\r\n\t\tright:'25dip',\r\n\t\tbottom:'25dip',\r\n\t\tzIndex:100000\r\n\t});\r\n\t\t\t\r\n\ticonView.add(Titanium.UI.createImageView({\r\n\t\theight:'60dip',\r\n\t\twidth:'60dip',\r\n\t\ttouchEnabled:false\r\n\t}));\r\n\t\r\n\twin.add(iconView);\r\n\t\t\r\n};\r\n\t\r\nvar window1 = Ti.UI.createWindow();\r\nvar window2 = Ti.UI.createWindow();\r\nvar window3 = Ti.UI.createWindow();\t\r\nvar\twindow4 = Ti.UI.createWindow();\r\nvar\twindow5 = Ti.UI.createWindow();\r\n\r\nvar tab1 = Ti.UI.createTab({\r\n\ttitle:'Tab 1',\r\n\twindow:window1\r\n});\r\n\t\r\nvar tab2 = Ti.UI.createTab({\r\n\ttitle:'Tab 2',\r\n\twindow:window2\r\n});\r\n\r\nvar tab3 = Ti.UI.createTab({\r\n\ttitle:'Tab 3',\r\n\twindow:window3\r\n});\r\n\r\nvar tab4 = Ti.UI.createTab({\r\n\ttitle:'Tab 4',\r\n\twindow:window4\r\n});\r\n\t\r\nvar tab5 = Ti.UI.createTab({\r\n\ttitle:'Tab 5',\r\n\twindow:window5\r\n});\r\n\t\t\t\t\r\nvar tabGroup = Titanium.UI.createTabGroup({\r\n\ttabs:[tab1, tab2, tab3, tab4, tab5]\r\n});\r\n\r\ntabGroup.addEventListener('open', function() {\r\n\t\r\n\tcreateTabView(window1);\r\n\tcreateTabView(window2);\r\n\tcreateTabView(window3);\r\n\tcreateTabView(window4);\r\n\tcreateTabView(window5);\r\n\r\n});\r\n \t\r\ntabGroup.open();\r\n{code}\r\n", "updateAuthor": { "name": "andreas.pingas", "key": "andreas.pingas", "displayName": "Andreas Pingas", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-03-05T21:58:00.000+0000", "updated": "2019-03-05T21:58:00.000+0000" }, { "id": "446592", "author": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "body": "Hello [~andreas.pingas], I have tested your sample code provided above. I Wasn't able to reproduce the crash that you mentioned in the 8.0.0 Android emulator with SDK 7.5.1.GA. First, clicking tab 4 and then tab 3, nothing wrong happens. Where are you testing is it in the device (which version and model?) or in the emulator? Thanks. ", "updateAuthor": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "created": "2019-03-06T19:10:48.000+0000", "updated": "2019-03-06T19:10:48.000+0000" }, { "id": "446606", "author": { "name": "andreas.pingas", "key": "andreas.pingas", "displayName": "Andreas Pingas", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Titanium SDK 8.0.0.RC\r\nAny Android version (Device or Emulator)", "updateAuthor": { "name": "andreas.pingas", "key": "andreas.pingas", "displayName": "Andreas Pingas", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-03-07T09:30:35.000+0000", "updated": "2019-03-07T09:30:35.000+0000" }, { "id": "447635", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR (master): https://github.com/appcelerator/titanium_mobile/pull/10829", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-04-12T01:55:36.000+0000", "updated": "2019-04-12T01:55:36.000+0000" }, { "id": "447993", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR (8.0.x): https://github.com/appcelerator/titanium_mobile/pull/10868", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-04-26T22:31:33.000+0000", "updated": "2019-04-26T22:31:33.000+0000" }, { "id": "448003", "author": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "body": "FR passed PR merged.", "updateAuthor": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-04-26T23:17:29.000+0000", "updated": "2019-04-26T23:17:29.000+0000" }, { "id": "448039", "author": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Closing ticket, fix verified in SDK version 8.0.1.v20190426162041 and SDK version 8.1.0.v20190426222341.\r\n\r\nTest and other information can be found at: \r\nMaster : https://github.com/appcelerator/titanium_mobile/pull/10829\r\n8_0_X: https://github.com/appcelerator/titanium_mobile/pull/10868\r\n\r\n", "updateAuthor": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-04-29T14:43:05.000+0000", "updated": "2019-04-29T14:43:05.000+0000" } ], "maxResults": 12, "total": 12, "startAt": 0 } } }