Nativescript-ui-feedback: RadListView Crashing App When ReorderHandle Is Touched

Created on 5 Feb 2018  路  5Comments  路  Source: ProgressNS/nativescript-ui-feedback

_From @brianwoo on February 4, 2018 3:33_

Please, provide the details below:

This is an issue that I found when using Nativescript's RadListView. The issue happens when I quickly touch a ReorderHandle of a row and immediately fling my finger, the app will crash. However, if I hold and actually move the ReorderHandle, the row will move with no issue.

I have captured a video to show this issue: https://youtu.be/uCAST_1APj0

Another video to show with finger touch: https://www.youtube.com/watch?v=Wm0seOTcEuE

This issue is reproducable on Android (Android 8.1 on Nexus 6P & Android 7.1.2 on Nexus 4).

Did you verify this is a real problem by searching the NativeScript Forum and the other open issues in this repo? Yes

Tell us about the problem

RadListView Crashing App When ReorderHandle Is Touched

Which platform(s) does your issue occur on?

Android

Please provide the following version numbers that your issue occurs with:

  • CLI: 3.3.1
  • Cross-platform modules: 3.3.0
  • Runtime(s): 3.3.1
  • Plugin(s): "@angular/animations": "4.4.6",
    "@angular/common": "4.4.6",
    "@angular/compiler": "4.4.6",
    "@angular/core": "4.4.6",
    "@angular/forms": "4.4.6",
    "@angular/http": "4.4.6",
    "@angular/platform-browser": "4.4.6",
    "@angular/router": "4.4.6",
    "nativescript-angular": "4.4.1",
    "nativescript-cardview": "^2.0.4",
    "nativescript-material-icons": "^1.0.3",
    "nativescript-ng2-fonticon": "^1.3.4",
    "nativescript-orientation": "^2.1.0",
    "nativescript-pro-ui": "3.2.0",
    "nativescript-ripple": "^2.0.0",
    "nativescript-status-bar": "^1.1.1",
    "nativescript-theme-core": "1.0.4",
    "reflect-metadata": "0.1.10",
    "rxjs": "5.5.2",
    "tns-core-modules": "3.3.0",
    "zone.js": "0.8.18"

Please tell us how to recreate the issue in as much detail as possible.

This is an issue that I found when using Nativescript's RadListView. The issue happens when I quickly touch a ReorderHandle of a row and immediately fling my finger slightly, the app will crash. However, if I hold and actually move the ReorderHandle, the row will move with no issue.

I have captured a video to show this issue: https://youtu.be/uCAST_1APj0

Another video to show with finger touch: https://www.youtube.com/watch?v=Wm0seOTcEuE

Is there code involved? If so, please share the minimal amount of code needed to recreate the problem.

You can clone this project to reproduce the issue: https://bitbucket.org/brianwoo/radlistview-bug-crash2/

_Copied from original issue: NativeScript/NativeScript#5378_

bug listview android

Most helpful comment

@NickIliev Same code doesn't seem to crash in playground which uses nativescript-pro-ui v3.3.0.

Besides is there a restriction to use ReorderHandle as direct descendant of the item template. Because declaring ReorderHandle one more level down as shown in the sample project doesn't make any difference nor crash in playground. If I move ReorderHandle one level above as direct descendant it worked as expected.

All 5 comments

_From @brianwoo on February 4, 2018 3:35_

Logcat captured here:

JS: Angular is running in the development mode. Call enableProdMode() to enable the production mode. 02-03 19:33:39.089 27154 27154 E MessageQueue-JNI: at com.tns.Runtime.callJSMethodNative(Native Method) 02-03 19:33:39.089 27154 27154 E MessageQueue-JNI: at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1088) 02-03 19:33:39.089 27154 27154 E MessageQueue-JNI: at com.tns.Runtime.callJSMethodImpl(Runtime.java:970) 02-03 19:33:39.089 27154 27154 E MessageQueue-JNI: at com.tns.Runtime.callJSMethod(Runtime.java:957) 02-03 19:33:39.089 27154 27154 E MessageQueue-JNI: at com.tns.Runtime.callJSMethod(Runtime.java:941) 02-03 19:33:39.089 27154 27154 E MessageQueue-JNI: at com.tns.Runtime.callJSMethod(Runtime.java:933) 02-03 19:33:39.092 27154 27154 E AndroidRuntime: at com.tns.Runtime.callJSMethodNative(Native Method) 02-03 19:33:39.092 27154 27154 E AndroidRuntime: at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1088) 02-03 19:33:39.092 27154 27154 E AndroidRuntime: at com.tns.Runtime.callJSMethodImpl(Runtime.java:970) 02-03 19:33:39.092 27154 27154 E AndroidRuntime: at com.tns.Runtime.callJSMethod(Runtime.java:957) 02-03 19:33:39.092 27154 27154 E AndroidRuntime: at com.tns.Runtime.callJSMethod(Runtime.java:941) 02-03 19:33:39.092 27154 27154 E AndroidRuntime: at com.tns.Runtime.callJSMethod(Runtime.java:933) System.err: com.tns.NativeScriptException: System.err: Calling js method onReorderFinished failed System.err: System.err: Error: Item must be an object from the currently assigned source. System.err: File: "file:///data/data/com.brainworks.radlistview.bug.crash2/files/app/tns_modules/nativescript-pro-ui/listview/listview.js, line: 443, column: 12 System.err: System.err: StackTrace: System.err: Frame: function:'ZoneAwareError', file:'file:///data/data/com.brainworks.radlistview.bug.crash2/files/app/tns_modules/nativescript-angular/zone-js/dist/zone-nativescript.js', line: 993, column: 33 System.err: Frame: function:'RadListView.getViewForItem', file:'file:///data/data/com.brainworks.radlistview.bug.crash2/files/app/tns_modules/nativescript-pro-ui/listview/listview.js', line: 443, column: 19 System.err: Frame: function:'onReorderFinished', file:'file:///data/data/com.brainworks.radlistview.bug.crash2/files/app/tns_modules/nativescript-pro-ui/listview/listview.js', line: 1046, column: 47 System.err: System.err: at com.tns.Runtime.callJSMethodNative(Native Method) System.err: at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1088) System.err: at com.tns.Runtime.callJSMethodImpl(Runtime.java:970) System.err: at com.tns.Runtime.callJSMethod(Runtime.java:957) System.err: at com.tns.Runtime.callJSMethod(Runtime.java:941) System.err: at com.tns.Runtime.callJSMethod(Runtime.java:933) System.err: at com.tns.gen.com.telerik.widget.list.ItemReorderBehavior_ItemReorderListener.onReorderFinished(Unknown Source:5) System.err: at com.telerik.widget.list.ItemReorderBehavior.endReorder(ItemReorderBehavior.java:238) System.err: at com.telerik.widget.list.ReorderWithHandlesBehavior.endReorder(ReorderWithHandlesBehavior.java:89) System.err: at com.telerik.widget.list.ReorderWithHandlesBehavior.onActionUpOrCancel(ReorderWithHandlesBehavior.java:51) System.err: at com.telerik.widget.list.ListViewGestureListener.onActionUpOrCancel(ListViewGestureListener.java:203) System.err: at com.telerik.widget.list.ListViewGestureListener.onTouchEvent(ListViewGestureListener.java:103) System.err: at com.telerik.widget.list.RadListView.onTouchEvent(RadListView.java:551) System.err: at android.view.View.dispatchTouchEvent(View.java:11776) System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2962) System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2643) System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968) System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657) System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968) System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657) System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968) System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657) System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968) System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657) System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968) System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657) System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968) System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657) System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968) System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657) System.err: at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:448) System.err: at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1829) System.err: at android.app.Activity.dispatchTouchEvent(Activity.java:3307) System.err: at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:410) System.err: at android.view.View.dispatchPointerEvent(View.java:12015) System.err: at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4795) System.err: at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4609) System.err: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4147) System.err: at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4200) System.err: at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4166) System.err: at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4293) System.err: at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4174) System.err: at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4350) System.err: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4147) System.err: at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4200) System.err: at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4166) System.err: at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4174) System.err: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4147) System.err: at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6661) System.err: at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6635) System.err: at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6596) System.err: at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6764) System.err: at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:186) System.err: at android.os.MessageQueue.nativePollOnce(Native Method) System.err: at android.os.MessageQueue.next(MessageQueue.java:325) System.err: at android.os.Looper.loop(Looper.java:142) System.err: at android.app.ActivityThread.main(ActivityThread.java:6494) System.err: at java.lang.reflect.Method.invoke(Native Method) System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) ActivityManager: Process com.brainworks.radlistview.bug.crash2 (pid 27154) has died: fore TOP ActivityManager: setHasOverlayUi called on unknown pid: 27154

@brianwoo confirming this one as a bug.
Steps to reproduce

  • use the application provided by the user or the exact same code as in the reorder example in the SDK examples (in fresh app)
  • initiate a reorder and drop it at the very beginning - as a result, the application throws the following error:
System.err: com.tns.NativeScriptException:
System.err: Calling js method onReorderFinished failed
System.err: Error: Item must be an object from the currently assigned source.
System.err: File: "file:///data/data/com.brainworks.radlistview.bug.crash2/files/app/tns_modules/nativescript-pro-ui/listview/listview.js, line: 443, column: 12
System.err: StackTrace:
System.err:     Frame: function:'ZoneAwareError', file:'file:///data/data/com.brainworks.radlistview.bug.crash2/files/app/tns_modules/nativescript-angular/zone-js/dist/zone-nativescript.js', line: 993, column: 33
System.err:     Frame: function:'RadListView.getViewForItem', file:'file:///data/data/com.brainworks.radlistview.bug.crash2/files/app/tns_modules/nativescript-pro-ui/listview/listview.js', line: 443,
column: 19
System.err:     Frame: function:'onReorderFinished', file:'file:///data/data/com.brainworks.radlistview.bug.crash2/files/app/tns_modules/nativescript-pro-ui/listview/listview.js', line: 1046, column:
47
System.err:     at com.tns.Runtime.callJSMethodNative(Native Method)
System.err:     at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1088)
System.err:     at com.tns.Runtime.callJSMethodImpl(Runtime.java:970)
System.err:     at com.tns.Runtime.callJSMethod(Runtime.java:957)
System.err:     at com.tns.Runtime.callJSMethod(Runtime.java:941)
System.err:     at com.tns.Runtime.callJSMethod(Runtime.java:933)
System.err:     at com.tns.gen.com.telerik.widget.list.ItemReorderBehavior_ItemReorderListener.onReorderFinished(com.telerik.widget.list.ItemReorderBehavior$ItemReorderListener.java)
System.err:     at com.telerik.widget.list.ItemReorderBehavior.endReorder(ItemReorderBehavior.java:238)
System.err:     at com.telerik.widget.list.ReorderWithHandlesBehavior.endReorder(ReorderWithHandlesBehavior.java:89)
System.err:     at com.telerik.widget.list.ReorderWithHandlesBehavior.onActionUpOrCancel(ReorderWithHandlesBehavior.java:51)
System.err:     at com.telerik.widget.list.ListViewGestureListener.onActionUpOrCancel(ListViewGestureListener.java:203)
System.err:     at com.telerik.widget.list.ListViewGestureListener.onTouchEvent(ListViewGestureListener.java:103)
System.err:     at com.telerik.widget.list.RadListView.onTouchEvent(RadListView.java:551)
System.err:     at android.view.View.dispatchTouchEvent(View.java:9294)
System.err:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2547)
System.err:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2240)
System.err:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
System.err:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
System.err:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
System.err:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
System.err:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
System.err:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
System.err:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
System.err:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
System.err:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
System.err:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
System.err:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
System.err:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
System.err:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
System.err:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
System.err:     at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2403)
System.err:     at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1737)
System.err:     at android.app.Activity.dispatchTouchEvent(Activity.java:2765)
System.err:     at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2364)
System.err:     at android.view.View.dispatchPointerEvent(View.java:9514)
System.err:     at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4230)
System.err:     at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4096)System.err:     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
System.err:     at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
System.err:     at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
System.err:     at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3787)
System.err:     at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)
System.err:     at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3844)
System.err:     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
System.err:     at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
System.err:     at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
System.err:     at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)
System.err:     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
System.err:     at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5922)
System.err:     at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5896)
System.err:     at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5857)
System.err:     at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6025)System.err:     at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
System.err:     at android.os.MessageQueue.nativePollOnce(Native Method)
System.err:     at android.os.MessageQueue.next(MessageQueue.java:323)
System.err:     at android.os.Looper.loop(Looper.java:135)
System.err:     at android.app.ActivityThread.main(ActivityThread.java:5417)
System.err:     at java.lang.reflect.Method.invoke(Native Method)
System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
ActivityManager: Process com.brainworks.radlistview.bug.crash2 (pid 4447) has died

@NickIliev Same code doesn't seem to crash in playground which uses nativescript-pro-ui v3.3.0.

Besides is there a restriction to use ReorderHandle as direct descendant of the item template. Because declaring ReorderHandle one more level down as shown in the sample project doesn't make any difference nor crash in playground. If I move ReorderHandle one level above as direct descendant it worked as expected.

@manojdcoder has solved it. Upgrading to nativescript-pro-ui 3.3.0 fixes the issue.

@manojdcoder thank you for the clarification about v3.3.0 and the Reoderhandle restriction.
Closing the issue as resolved in the latest version of nativescript-pro-ui.

Was this page helpful?
0 / 5 - 0 ratings