{ "id": "94063", "key": "TIMOB-9834", "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": [], "resolution": { "id": "7", "description": "", "name": "Invalid" }, "resolutiondate": "2012-06-29T11:19:06.000+0000", "created": "2012-06-28T14:01:48.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "api" ], "versions": [ { "id": "13271", "description": "Release 2.1.0", "name": "Release 2.1.0", "archived": false, "released": true, "releaseDate": "2012-06-29" } ], "issuelinks": [], "assignee": { "name": "joshroesslein", "key": "joshroesslein", "displayName": "Josh Roesslein", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2017-03-24T18:09:27.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": "h4. Problem Description\r\nApp is crashing when you close the tabgroup.\r\n\r\nh4. Expected results\r\nThe tabgroup closing.\r\n\r\nh4. Actual results\r\nThe app showing an error \"the app has stopped unexpectedly\". We got more info in DDMS, please check the \"Extra info\" field at the bottom of this report. \r\n\r\nh4. Test Case\r\n1. Create new mobile project.\r\n2. Add this app.js:\r\n\r\n{code}\r\nvar tabGroup = Titanium.UI.createTabGroup();\r\nvar win1 = Titanium.UI.createWindow({ \r\n title:'Tab 1',\r\n});\r\nvar tab1 = Titanium.UI.createTab({ \r\n icon:'KS_nav_views.png',\r\n title:'Tab 1',\r\n window:win1\r\n});\r\nvar label1 = Titanium.UI.createLabel({\r\n\tcolor:'#999',\r\n\ttext:'I am Window 1',\r\n\ttextAlign:'center',\r\n\twidth:'auto'\r\n});\r\nwin1.add(label1);\r\nvar win2 = Titanium.UI.createWindow({ \r\n title:'Tab 2',\r\n backgroundColor:'#fff'\r\n});\r\nvar tab2 = Titanium.UI.createTab({ \r\n icon:'KS_nav_ui.png',\r\n title:'Tab 2',\r\n window:win2\r\n});\r\nvar label2 = Titanium.UI.createLabel({\r\n\tcolor:'#999',\r\n\ttext:'I am Window 2',\r\n\ttextAlign:'center',\r\n\twidth:'auto'\r\n});\r\nwin2.add(label2);\r\ntabGroup.addTab(tab1); \r\ntabGroup.addTab(tab2); \r\ntabGroup.open();\r\ntabGroup.close();\r\n{code}\r\n\r\nh4. Extra info\r\n\r\nThis same code is working fine in iOS and Mobile Web. \r\n\r\nThe DDMS output related to the crash, here: \r\n\r\n{code}\r\n06-28 15:50:30.827: E/TiApplication(4914): (main) [51,624] Sending event: exception on thread: main msg:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.negoapps.ingtesttabgroup/com.negoapps.ingtesttabgroup.IngtesttabgroupActivity}: java.lang.NullPointerException; Titanium 2.1.0,2012/06/28 11:42,c6b7897\r\n06-28 15:50:30.827: E/TiApplication(4914): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.negoapps.ingtesttabgroup/com.negoapps.ingtesttabgroup.IngtesttabgroupActivity}: java.lang.NullPointerException\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat android.app.ActivityThread.access$1500(ActivityThread.java:117)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat android.os.Handler.dispatchMessage(Handler.java:99)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat android.os.Looper.loop(Looper.java:130)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat android.app.ActivityThread.main(ActivityThread.java:3683)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat java.lang.reflect.Method.invokeNative(Native Method)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat java.lang.reflect.Method.invoke(Method.java:507)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:850)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat dalvik.system.NativeStart.main(Native Method)\r\n06-28 15:50:30.827: E/TiApplication(4914): Caused by: java.lang.NullPointerException\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat ti.modules.titanium.ui.TabGroupProxy.handleClose(TabGroupProxy.java:322)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat org.appcelerator.titanium.proxy.TiWindowProxy.handleMessage(TiWindowProxy.java:106)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat ti.modules.titanium.ui.TabGroupProxy.handleMessage(TabGroupProxy.java:98)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat android.os.Handler.dispatchMessage(Handler.java:95)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat org.appcelerator.kroll.common.TiMessenger.dispatchMessage(TiMessenger.java:365)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat org.appcelerator.kroll.common.TiMessenger.dispatchPendingMessages(TiMessenger.java:350)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat org.appcelerator.kroll.common.TiMessenger$2.getResult(TiMessenger.java:235)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat org.appcelerator.kroll.common.TiMessenger.sendBlockingMessage(TiMessenger.java:262)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat org.appcelerator.kroll.common.TiMessenger.sendBlockingRuntimeMessage(TiMessenger.java:187)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat org.appcelerator.kroll.KrollProxy.fireSyncEvent(KrollProxy.java:605)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat org.appcelerator.titanium.TiBaseActivity.onCreate(TiBaseActivity.java:428)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat org.appcelerator.titanium.TiLaunchActivity.onCreate(TiLaunchActivity.java:162)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat org.appcelerator.titanium.TiRootActivity.onCreate(TiRootActivity.java:99)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)\r\n06-28 15:50:30.827: E/TiApplication(4914): \tat android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)\r\n06-28 15:50:30.827: E/TiApplication(4914): \t... 11 more\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): FATAL EXCEPTION: main\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.negoapps.ingtesttabgroup/com.negoapps.ingtesttabgroup.IngtesttabgroupActivity}: java.lang.NullPointerException\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat android.app.ActivityThread.access$1500(ActivityThread.java:117)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat android.os.Handler.dispatchMessage(Handler.java:99)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat android.os.Looper.loop(Looper.java:130)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat android.app.ActivityThread.main(ActivityThread.java:3683)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat java.lang.reflect.Method.invokeNative(Native Method)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat java.lang.reflect.Method.invoke(Method.java:507)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:850)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat dalvik.system.NativeStart.main(Native Method)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): Caused by: java.lang.NullPointerException\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat ti.modules.titanium.ui.TabGroupProxy.handleClose(TabGroupProxy.java:322)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat org.appcelerator.titanium.proxy.TiWindowProxy.handleMessage(TiWindowProxy.java:106)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat ti.modules.titanium.ui.TabGroupProxy.handleMessage(TabGroupProxy.java:98)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat android.os.Handler.dispatchMessage(Handler.java:95)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat org.appcelerator.kroll.common.TiMessenger.dispatchMessage(TiMessenger.java:365)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat org.appcelerator.kroll.common.TiMessenger.dispatchPendingMessages(TiMessenger.java:350)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat org.appcelerator.kroll.common.TiMessenger$2.getResult(TiMessenger.java:235)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat org.appcelerator.kroll.common.TiMessenger.sendBlockingMessage(TiMessenger.java:262)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat org.appcelerator.kroll.common.TiMessenger.sendBlockingRuntimeMessage(TiMessenger.java:187)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat org.appcelerator.kroll.KrollProxy.fireSyncEvent(KrollProxy.java:605)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat org.appcelerator.titanium.TiBaseActivity.onCreate(TiBaseActivity.java:428)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat org.appcelerator.titanium.TiLaunchActivity.onCreate(TiLaunchActivity.java:162)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat org.appcelerator.titanium.TiRootActivity.onCreate(TiRootActivity.java:99)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \tat android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)\r\n06-28 15:50:30.928: E/AndroidRuntime(4914): \t... 11 more\r\n\r\n{code}", "attachment": [], "flagged": false, "summary": "Android: Tabgroup.close() will crash the app", "creator": { "name": "mpmiranda", "key": "mpmiranda", "displayName": "Mauro Parra-Miranda", "active": true, "timeZone": "America/Mexico_City" }, "subtasks": [], "reporter": { "name": "mpmiranda", "key": "mpmiranda", "displayName": "Mauro Parra-Miranda", "active": true, "timeZone": "America/Mexico_City" }, "environment": "Titanium SDK version: 2.1.0 (06/28/12 11:41 c6b7897)\r\nJavascript Engine: V8 \r\nPlatform & version: Android 2.3\r\nDevice Details: Kindle Fire, Motodroid (it only shows in device) \r\nHost Operating System: OS X 10.7.3\r\nTitanium Studio version: 2.0.2", "comment": { "comments": [ { "id": "200890", "author": { "name": "joshroesslein", "key": "joshroesslein", "displayName": "Josh Roesslein", "active": true, "timeZone": "America/Los_Angeles" }, "body": "This is caused by closing the tab group before it has fully opened.", "updateAuthor": { "name": "joshroesslein", "key": "joshroesslein", "displayName": "Josh Roesslein", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-06-29T11:05:14.000+0000", "updated": "2012-06-29T11:05:14.000+0000" }, { "id": "200892", "author": { "name": "joshroesslein", "key": "joshroesslein", "displayName": "Josh Roesslein", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Closing a TabGroup before the \"open\" event has fired is not supported.\r\nThere can be some lag between calling open() and the new tab group being fully opened\r\non Android especially on slower devices (ex: emulator).\r\n\r\nBy placing the close call inside an \"open\" event listener on the tab group the crash goes away.", "updateAuthor": { "name": "joshroesslein", "key": "joshroesslein", "displayName": "Josh Roesslein", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-06-29T11:18:41.000+0000", "updated": "2012-06-29T11:18:41.000+0000" }, { "id": "200893", "author": { "name": "joshroesslein", "key": "joshroesslein", "displayName": "Josh Roesslein", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Closing as invalid, see comment above why this isn't correct.", "updateAuthor": { "name": "joshroesslein", "key": "joshroesslein", "displayName": "Josh Roesslein", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-06-29T11:19:06.000+0000", "updated": "2012-06-29T11:19:06.000+0000" }, { "id": "415628", "author": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Closing ticket as invalid with reference to the above comments.", "updateAuthor": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2017-03-24T18:09:27.000+0000", "updated": "2017-03-24T18:09:27.000+0000" } ], "maxResults": 4, "total": 4, "startAt": 0 } } }