{ "id": "61343", "key": "TIMOB-711", "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": "5", "description": "All attempts at reproducing this issue failed, or not enough information was available to reproduce the issue. Reading the code produces no clues as to why this behavior would occur. If more information appears later, please reopen the issue.", "name": "Cannot Reproduce" }, "resolutiondate": "2012-07-25T14:14:06.000+0000", "created": "2011-04-15T02:34:57.000+0000", "priority": { "name": "Medium", "id": "3" }, "labels": [ "android", "defect" ], "versions": [], "issuelinks": [ { "id": "19176", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "94532", "key": "TIMOB-9901", "fields": { "summary": "TiAPI: Review and clean up platform bugs and reduce bug count by 20%.", "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" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false } } } } ], "assignee": { "name": "ngupta", "key": "ngupta", "displayName": "Neeraj Gupta", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2012-10-25T10:12:07.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": "{html}
My second defect relating to TableViewRows.
\nif you create a few TableViewRows containing a few different\nlayouts but give them the same className.
\nWhen you change orientation Android crashes. Documentation\nshould probably be more explicit about the importance of clasName,\nand at least trap and report the error (later inteligent hash for\nclassName?)
\nSalient exception below from the Orientation changed\nevent...
\nW/InputManagerService( 75): Window already focused, ignoring\nfocus gain of:\ncom.android.internal.view.IInputMethodClient$Stub$Proxy@4339b338
\nI/WindowManager( 75): onOrientationChanged, rotation changed to\n1
\nI/WindowManager( 75): Setting rotation to 1, animFlags=0
\nI/WindowManager( 75): Config changed: { scale=1.0 imsi=0/0\nloc=en_GB touch=3 keys=2/1/2 nav=3 orien=2 layout=18}
\nD/LAYOUT ( 2636): (main) [3738,15715] TabHost {0,0,480,295}
\nD/LAYOUT ( 2636): (main) [5,15720] TiTableView {0,0,480,227}
\nD/TiFileFactory( 2636): (main) [16,15736] getting initial from\nparts: app://images/smile_logo.png
\nD/TiFileFactory( 2636): (main) [5,15741] getting initial from\nparts: file:///android_asset/Resources/images/smile_logo.png
\nD/TiBackground( 2636): (main) [5,15746]\nbackground=BitmapDrawable,state.len=2,state[0]=16842909
\nD/AndroidRuntime( 2636): Shutting down VM
\nW/dalvikvm( 2636): threadid=3: thread exiting with uncaught\nexception (group=0x4001da28)
\nD/StatusBar( 75): updateResources
\nE/TiUncaughtHandler( 2636): (main) [7,15753] Sending event:\nexception on thread: main\nmsg:java.lang.ArrayIndexOutOfBoundsException
\nE/TiUncaughtHandler( 2636):\njava.lang.ArrayIndexOutOfBoundsException
\nE/TiUncaughtHandler( 2636): at\nti.modules.titanium.ui.widget.tableview.TiTableViewRowProxyItem.setRowData(Unknown\nSource)
\nE/TiUncaughtHandler( 2636): at\nti.modules.titanium.ui.widget.tableview.TiTableView$TTVListAdapter.getView(Unknown\nSource)
\nE/TiUncaughtHandler( 2636): at\nandroid.widget.AbsListView.obtainView(AbsListView.java:1255)
\nE/TiUncaughtHandler( 2636): at\nandroid.widget.ListView.makeAndAddView(ListView.java:1658)
\nE/TiUncaughtHandler( 2636): at\nandroid.widget.ListView.fillSpecific(ListView.java:1212)
\nE/TiUncaughtHandler( 2636): at\nandroid.widget.ListView.layoutChildren(ListView.java:1494)
\nE/TiUncaughtHandler( 2636): at\nandroid.widget.AbsListView.onLayout(AbsListView.java:1112)
\nE/TiUncaughtHandler( 2636): at\nandroid.view.View.layout(View.java:6569)
\nE/TiUncaughtHandler( 2636): at\nandroid.widget.FrameLayout.onLayout(FrameLayout.java:333)
\nE/TiUncaughtHandler( 2636): at\nandroid.view.View.layout(View.java:6569)
\nE/TiUncaughtHandler( 2636): at\norg.appcelerator.titanium.view.TiCompositeLayout.onLayout(Unknown\nSource)
\nE/TiUncaughtHandler( 2636): at\nandroid.view.View.layout(View.java:6569)
\nE/TiUncaughtHandler( 2636): at\nandroid.widget.FrameLayout.onLayout(FrameLayout.java:333)
\nE/TiUncaughtHandler( 2636): at\nandroid.view.View.layout(View.java:6569)
\nE/TiUncaughtHandler( 2636): at\nandroid.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
\nE/TiUncaughtHandler( 2636): at\nandroid.widget.LinearLayout.layoutVertical(LinearLayout.java:998)
\nE/TiUncaughtHandler( 2636): at\nandroid.widget.LinearLayout.onLayout(LinearLayout.java:918)
\nE/TiUncaughtHandler( 2636): at\nandroid.view.View.layout(View.java:6569)
\nE/TiUncaughtHandler( 2636): at\nandroid.widget.FrameLayout.onLayout(FrameLayout.java:333)
\nE/TiUncaughtHandler( 2636): at\nandroid.view.View.layout(View.java:6569)
\nE/TiUncaughtHandler( 2636): at\nandroid.widget.FrameLayout.onLayout(FrameLayout.java:333)
\nE/TiUncaughtHandler( 2636): at\nandroid.view.View.layout(View.java:6569)
\nE/TiUncaughtHandler( 2636): at\nandroid.widget.FrameLayout.onLayout(FrameLayout.java:333)
\nE/TiUncaughtHandler( 2636): at\nandroid.view.View.layout(View.java:6569)
\nE/TiUncaughtHandler( 2636): at\norg.appcelerator.titanium.view.TiCompositeLayout.onLayout(Unknown\nSource)
\nE/TiUncaughtHandler( 2636): at\nandroid.view.View.layout(View.java:6569)
\nE/TiUncaughtHandler( 2636): at\nandroid.widget.FrameLayout.onLayout(FrameLayout.java:333)
\nE/TiUncaughtHandler( 2636): at\nandroid.view.View.layout(View.java:6569)
\nE/TiUncaughtHandler( 2636): at\nandroid.widget.FrameLayout.onLayout(FrameLayout.java:333)
\nE/TiUncaughtHandler( 2636): at\nandroid.view.View.layout(View.java:6569)
\nE/TiUncaughtHandler( 2636): at\nandroid.view.ViewRoot.performTraversals(ViewRoot.java:979)
\nE/TiUncaughtHandler( 2636): at\nandroid.view.ViewRoot.handleMessage(ViewRoot.java:1613)
\nE/TiUncaughtHandler( 2636): at\nandroid.os.Handler.dispatchMessage(Handler.java:99)
\nE/TiUncaughtHandler( 2636): at\nandroid.os.Looper.loop(Looper.java:123)
\nE/TiUncaughtHandler( 2636): at\nandroid.app.ActivityThread.main(ActivityThread.java:4203)
\nE/TiUncaughtHandler( 2636): at\njava.lang.reflect.Method.invokeNative(Native Method)
\nE/TiUncaughtHandler( 2636): at\njava.lang.reflect.Method.invoke(Method.java:521)
\nE/TiUncaughtHandler( 2636): at\ncom.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
\nE/TiUncaughtHandler( 2636): at\ncom.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
\nE/TiUncaughtHandler( 2636): at\ndalvik.system.NativeStart.main(Native Method)
\nD/dalvikvm( 2636): GC freed 8533 objects / 529456 bytes in\n174ms
\nD/TiApplication( 2636): (main) [1102,16855] Analytics Event:\ntype=ti.crash
\nD/TiApplication( 2636): event=ti.crash
\nD/TiApplication( 2636): timestamp=2010-04-03T02:50:32.179+0000
\nD/TiApplication( 2636): mid=200145da90baeb2c
\nD/TiApplication( 2636):\nsid=846bba95-0f52-4b77-b31c-9c1645e4f576
\nD/TiApplication( 2636):\naguid=f47edb0e-2f5a-4399-bd28-d6fa66bb8e60
\nD/TiApplication( 2636): isJSON=true
The rows do not have to have a different layout to be affected.\nI have many tables that blow up seemingly at random unless the\nclass name is unique for every row (even if the the layout is the\nsame and just the text of a label is different). The fix for now is\nto make classname unique for every row of every table.
\n1) Rows sometimes change positions or disappear while\nscrolling.
\n2) The application will crash at random
I've fixed most of the issues surround weird re-drawing. The\nroot of the problem was we were always reusing views when no\nclassName was provided (since all rows had the same default class\nname). See this issue:
\n\nhttps://appcelerator.lighthouseapp.com/projects/32238/tickets/1193-...
Would you guys mind updating to the latest? I haven't been able\nto reproduce the \"same class different layout\" crash with the\ncurrent code