我不断地从我的Xamarin.Forms应用程序中的Android项目中随机获取以下异常。
java.util.ConcurrentModificationException:
at java.util.ArrayList$Itr.next (ArrayList.java:860)
at com.telerik.widget.primitives.panels.RadScrollView.notifyLaidOutListeners (RadScrollView.java:153)
at com.telerik.widget.primitives.panels.RadScrollView.onLayout (RadScrollView.java:2092)
at android.view.View.layout (View.java:24475)
at android.view.ViewGroup.layout (ViewGroup.java:7383)
at crc643f46942d9dd1fff9.ViewRenderer_2.n_onLayout (Native Method)
at crc643f46942d9dd1fff9.ViewRenderer_2.onLayout (ViewRenderer_2.java:47)
at android.view.View.layout (View.java:24475)
at android.view.ViewGroup.layout (ViewGroup.java:7383)
at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout (FormsViewGroup.java:37)
at crc643f46942d9dd1fff9.Platform_DefaultRenderer.n_onLayout (Native Method)
at crc643f46942d9dd1fff9.Platform_DefaultRenderer.onLayout (Platform_DefaultRenderer.java:72)
at android.view.View.layout (View.java:24475)
at android.view.ViewGroup.layout (ViewGroup.java:7383)
at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout (FormsViewGroup.java:37)
at crc643f46942d9dd1fff9.Platform_DefaultRenderer.n_onLayout (Native Method)
at crc643f46942d9dd1fff9.Platform_DefaultRenderer.onLayout (Platform_DefaultRenderer.java:72)
at android.view.View.layout (View.java:24475)
at android.view.ViewGroup.layout (ViewGroup.java:7383)
at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout (FormsViewGroup.java:37)
at crc643f46942d9dd1fff9.Platform_DefaultRenderer.n_onLayout (Native Method)
at crc643f46942d9dd1fff9.Platform_DefaultRenderer.onLayout (Platform_DefaultRenderer.java:72)
at android.view.View.layout (View.java:24475)
at android.view.ViewGroup.layout (ViewGroup.java:7383)
at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout (FormsViewGroup.java:37)
at crc64ee486da937c010f4.FrameRenderer.n_onLayout (Native Method)
at crc64ee486da937c010f4.FrameRenderer.onLayout (FrameRenderer.java:47)
at android.view.View.layout (View.java:24475)
at android.view.ViewGroup.layout (ViewGroup.java:7383)
at crc643f46942d9dd1fff9.Platform_DefaultRenderer.n_onLayout (Native Method)
at crc643f46942d9dd1fff9.Platform_DefaultRenderer.onLayout (Platform_DefaultRenderer.java:72)
at android.view.View.layout (View.java:24475)
at android.view.ViewGroup.layout (ViewGroup.java:7383)
at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout (FormsViewGroup.java:37)
at crc643f46942d9dd1fff9.Platform_DefaultRenderer.n_onLayout (Native Method)
at crc643f46942d9dd1fff9.Platform_DefaultRenderer.onLayout (Platform_DefaultRenderer.java:72)
at android.view.View.layout (View.java:24475)
at android.view.ViewGroup.layout (ViewGroup.java:7383)
at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout (FormsViewGroup.java:37)
at crc643f46942d9dd1fff9.ScrollViewContainer.n_onLayout (Native Method)
at crc643f46942d9dd1fff9.ScrollViewContainer.onLayout (ScrollViewContainer.java:46)
at android.view.View.layout (View.java:24475)
at android.view.ViewGroup.layout (ViewGroup.java:7383)
at android.widget.FrameLayout.layoutChildren (FrameLayout.java:332)
at android.widget.FrameLayout.onLayout (FrameLayout.java:270)
at androidx.core.widget.NestedScrollView.onLayout (NestedScrollView.java:1854)
at crc643f46942d9dd1fff9.ScrollViewRenderer.n_onLayout (Native Method)
at crc643f46942d9dd1fff9.ScrollViewRenderer.onLayout (ScrollViewRenderer.java:91)
at android.view.View.layout (View.java:24475)
at android.view.ViewGroup.layout (ViewGroup.java:7383)
at crc643f46942d9dd1fff9.Platform_DefaultRenderer.n_onLayout (Native Method)
at crc643f46942d9dd1fff9.Platform_DefaultRenderer.onLayout (Platform_DefaultRenderer.java:72)
at android.view.View.layout (View.java:24475)
at android.view.ViewGroup.layout (ViewGroup.java:7383)
at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout (FormsViewGroup.java:37)
at crc643f46942d9dd1fff9.PageRenderer.n_onLayout (Native Method)
at crc643f46942d9dd1fff9.PageRenderer.onLayout (PageRenderer.java:72)
at android.view.View.layout (View.java:24475)
at android.view.ViewGroup.layout (ViewGroup.java:7383)
at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout (FormsViewGroup.java:37)
at crc64720bb2db43a66fe9.NavigationPageRenderer.n_onLayout (Native Method)
at crc64720bb2db43a66fe9.NavigationPageRenderer.onLayout (NavigationPageRenderer.java:65)
at android.view.View.layout (View.java:24475)
at android.view.ViewGroup.layout (ViewGroup.java:7383)
at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout (FormsViewGroup.java:37)
at crc64720bb2db43a66fe9.MasterDetailContainer.n_onLayout (Native Method)
at crc64720bb2db43a66fe9.MasterDetailContainer.onLayout (MasterDetailContainer.java:46)
at android.view.View.layout (View.java:24475)
at android.view.ViewGroup.layout (ViewGroup.java:7383)
at androidx.drawerlayout.widget.DrawerLayout.onLayout (DrawerLayout.java:1231)
at crc64720bb2db43a66fe9.MasterDetailPageRenderer.n_onLayout (Native Method)
at crc64720bb2db43a66fe9.MasterDetailPageRenderer.onLayout (MasterDetailPageRenderer.java:68)
at android.view.View.layout (View.java:24475)
at android.view.ViewGroup.layout (ViewGroup.java:7383)
at crc643f46942d9dd1fff9.PlatformRenderer.n_onLayout (Native Method)
at crc643f46942d9dd1fff9.PlatformRenderer.onLayout (PlatformRenderer.java:55)
at android.view.View.layout (View.java:24475)
at android.view.ViewGroup.layout (ViewGroup.java:7383)
at android.widget.RelativeLayout.onLayout (RelativeLayout.java:1103)
at android.view.View.layout (View.java:24475)
at android.view.ViewGroup.layout (ViewGroup.java:7383)
at android.widget.FrameLayout.layoutChildren (FrameLayout.java:332)
at android.widget.FrameLayout.onLayout (FrameLayout.java:270)
at android.view.View.layout (View.java:24475)
at android.view.ViewGroup.layout (ViewGroup.java:7383)
at android.widget.FrameLayout.layoutChildren (FrameLayout.java:332)
at android.widget.FrameLayout.onLayout (FrameLayout.java:270)
at android.view.View.layout (View.java:24475)
at android.view.ViewGroup.layout (ViewGroup.java:7383)
at android.widget.FrameLayout.layoutChildren (FrameLayout.java:332)
at android.widget.FrameLayout.onLayout (FrameLayout.java:270)
at android.view.View.layout (View.java:24475)
at android.view.ViewGroup.layout (ViewGroup.java:7383)
at android.widget.LinearLayout.setChildFrame (LinearLayout.java:1829)
at android.widget.LinearLayout.layoutVertical (LinearLayout.java:1673)
at android.widget.LinearLayout.onLayout (LinearLayout.java:1582)
at android.view.View.layout (View.java:24475)
at android.view.ViewGroup.layout (ViewGroup.java:7383)
at android.widget.FrameLayout.layoutChildren (FrameLayout.java:332)
at android.widget.FrameLayout.onLayout (FrameLayout.java:270)
at com.android.internal.policy.DecorView.onLayout (DecorView.java:1225)
at android.view.View.layout (View.java:24475)
at android.view.ViewGroup.layout (ViewGroup.java:7383)
at android.view.ViewRootImpl.performLayout (ViewRootImpl.java:4260)
at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:3695)
at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:2618)
at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:9971)
at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1010)
at android.view.Choreographer.doCallbacks (Choreographer.java:809)
at android.view.Choreographer.doFrame (Choreographer.java:744)
at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:995)
at android.os.Handler.handleCallback (Handler.java:938)
at android.os.Handler.dispatchMessage (Handler.java:99)
at android.os.Looper.loop (Looper.java:246)
at android.app.ActivityThread.main (ActivityThread.java:8538)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1130)
这似乎是随机发生的,我只是希望有人面对同样的问题,并对该做什么有一个想法?我无法调试,因为它来自非托管代码。任何可能导致这一问题的想法和任何潜在的解决办法都将受到极大的赞赏。
谢谢
发布于 2021-10-20 07:24:12
经过大量调试,发现这与水平滚动控件(Telerik DataGrid )在垂直滚动布局(Scrollview)中有一个有关,然后当DataGrid中的条目集中时,尝试在DataGrid上使用DataGrid。
为了解决这个问题,在我的OnAppearing()
覆盖中,我检查了Device.RuntimePlatform
是否是Android,并通过使用视图模型中的IsVisible
绑定属性来检查DataGrid控制是否是可见的,然后删除它。该控件位于网格中,因此我能够使用控件的x:Names
并调用.Children.Remove()
.来完成此操作。
然后使用Device.RuntimePlatform来检查设备是否为Android,以及是否没有调用ScrollToAsync()。
所以代码看起来像是:
var vm = BindingContext as MyViewModelName;
if (Device.RuntimePlatform == Device.Android && !vm.DataGridIsVisible){
MyGridControl.Children.Remove(MyDataGridControl);
}
注意,这里的MyGridControl
和MyDataGridControl
是控件的X:Name
属性。
发布于 2021-10-19 17:38:49
由于您只提供错误信息,因此此错误通常出现在ArrayList的迭代中。
主要原因是modCount
和expectedModCount
的值由于调用list.remove()方法而不一致。
如果使用迭代器,则可以通过直接调用Iterator.remove()
来避免此错误。
如果您只是调用API而没有其他操作,那么内部接口也会出现类似的问题。
https://stackoverflow.com/questions/69624871
复制相似问题