我不斷從 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)
它似乎是隨機發生的,我只是希望有人遇到同樣的問題并且知道該怎么做?我無法除錯,因為它來自非托管代碼。關于可能導致這種情況的任何想法以及任何潛在的解決方案都將受到高度贊賞。
謝謝
uj5u.com熱心網友回復:
由于你只提供了錯誤資訊,從錯誤資訊來看,這個錯誤一般出現在ArrayList的迭代中。
主要原因是呼叫 list.remove() 方法導致modCount和的值expectedModCount不一致。
如果使用迭代器Iterator.remove()直接呼叫可以避免這個錯誤。
如果只是呼叫API,沒有其他操作,應該是內部介面類似的問題。
uj5u.com熱心網友回復:
經過多次除錯,結果證明它與在垂直可滾動布局 (Scrollview)內具有水平可滾動控制元件 (Telerik DataGrid ) 相關。
為了解決這個問題,在我的OnAppearing()覆寫中,我檢查了Device.RuntimePlatformAndroid 并檢查了DataGrid 控制元件是否應該通過使用IsVisible我的視圖模型中的Binding 屬性可見,然后將其洗掉。該控制元件位于網格內,因此我能夠使用x:Names控制元件的 和呼叫.Children.Remove().
所以代碼看起來像:
var vm = BindingContext as MyViewModelName;
if (Device.RuntimePlatform == Device.Android && !vm.DataGridIsVisible){
MyGridControl.Children.Remove(MyDataGridControl);
}
需要注意的是MyGridControl和MyDataGridControl這里的X:Name控制元件的屬性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/329454.html
標籤:沙马林 xamarin.forms 安卓系统 电传
