Xamarin.Android在Fragments中加载Syncfusion图表:需要边界Rect

问题描述 投票:0回答:1

我在Android项目中使用Syncfusion图表(Com.Syncfusion.Charts)时遇到问题。我正在使用BottomNavigationView并将内容加载到Fragments中。

这个特定的片段有6个视图,并排显示2个视图,其中4个包含图表,其他视图包含文本视图。

片段正常加载(有时)。但是当我浏览其他片段或活动并返回到图表片段时,它会崩溃。

[MonoDroid] UNHANDLED EXCEPTION:
[MonoDroid] Java.Lang.NullPointerException: need bounds Rect
[MonoDroid]   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <896ad1d315ca4ba7b117efb8dacaedcf>:0 
[MonoDroid]   at Java.Interop.JniEnvironment+InstanceMethods.CallVoidMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x00069] in <e499a5498b1b48379b88fe5ed629079f>:0 
[MonoDroid]   at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeVirtualVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x0002a] in <e499a5498b1b48379b88fe5ed629079f>:0 
[MonoDroid]   at Android.Graphics.Paint.GetTextBounds (System.String text, System.Int32 start, System.Int32 end, Android.Graphics.Rect bounds) [0x00079] in <85286732fd894fbbba95d2215e5f9ec6>:0 
[MonoDroid]   at Com.Syncfusion.Charts.ChartLabelStyle.measureLabel (System.String label, Android.Graphics.Rect labelRect, Android.Graphics.Paint paintText, System.Single leftMargin, System.Single topMargin, System.Single rightMargin, System.Single bottomMargin) [0x00027] in <a9b0cef031b54405bf316434aa63799b>:0 
[MonoDroid]   at Com.Syncfusion.Charts.ChartLabelStyle.MeasureLabel (System.String label) [0x0003e] in <a9b0cef031b54405bf316434aa63799b>:0 
[MonoDroid]   at Com.Syncfusion.Charts.XyDataSeries.CalculateDataMarkerLabelPoint (Com.Syncfusion.Charts.DataMarkerLabel dataMarkerLabel, System.Drawing.PointF labelPoint, Com.Syncfusion.Charts.ChartDataMarkerLabelStyle labelStyle, System.Boolean isDrawLine) [0x00011] in <a9b0cef031b54405bf316434aa63799b>:0 
[MonoDroid]   at Com.Syncfusion.Charts.XyDataSeries.CreateDataMarkerLabels () [0x00198] in <a9b0cef031b54405bf316434aa63799b>:0 
[MonoDroid]   at Com.Syncfusion.Charts.ChartBase.UpdateArea () [0x00131] in <a9b0cef031b54405bf316434aa63799b>:0 
[MonoDroid]   at Com.Syncfusion.Charts.ChartBase.OnMeasureChart () [0x00031] in <a9b0cef031b54405bf316434aa63799b>:0 
[MonoDroid]   at Com.Syncfusion.Charts.SfChart.OnMeasure (System.Int32 widthMeasureSpec, System.Int32 heightMeasureSpec) [0x0003e] in <a9b0cef031b54405bf316434aa63799b>:0 
[MonoDroid]   at Android.Views.View.n_OnMeasure_II (System.IntPtr jnienv, System.IntPtr native__this, System.Int32 widthMeasureSpec, System.Int32 heightMeasureSpec) [0x00008] in <85286732fd894fbbba95d2215e5f9ec6>:0 
[MonoDroid]   at (wrapper dynamic-method) System.Object:a6e2f256-5633-444e-9d6a-06be6e391800 (intptr,intptr,int,int)
[MonoDroid]   --- End of managed Java.Lang.NullPointerException stack trace ---
[MonoDroid] java.lang.NullPointerException: need bounds Rect
[MonoDroid]     at android.graphics.Paint.getTextBounds(Paint.java:2192)
[MonoDroid]     at md51e14154f795d24977fc65ef53030a808.SfChart.n_onMeasure(Native Method)
[MonoDroid]     at md51e14154f795d24977fc65ef53030a808.SfChart.onMeasure(SfChart.java:53)
[MonoDroid]     at android.view.View.measure(View.java:17430)
[MonoDroid]     at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:727)
[MonoDroid]     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:463)
[MonoDroid]     at android.view.View.measure(View.java:17430)
[MonoDroid]     at android.widget.LinearLayout.measureVertical(LinearLayout.java:875)
[MonoDroid]     at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
[MonoDroid]     at android.view.View.measure(View.java:17430)
[MonoDroid]     at android.widget.RelativeLayout.measureChild(RelativeLayout.java:697)
[MonoDroid]     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:481)
[MonoDroid]     at android.view.View.measure(View.java:17430)
[MonoDroid]     at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:1260)
[MonoDroid]     at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
[MonoDroid]     at android.widget.ScrollView.onMeasure(ScrollView.java:337)
[MonoDroid]     at android.view.View.measure(View.java:17430)
[MonoDroid]     at android.widget.RelativeLayout.measureChild(RelativeLayout.java:697)
[MonoDroid]     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:481)
[MonoDroid]     at android.view.View.measure(View.java:17430)
[MonoDroid]     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
[MonoDroid]     at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
[MonoDroid]     at android.view.View.measure(View.java:17430)
[MonoDroid]     at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:727)
[MonoDroid]     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:463)
[MonoDroid]     at android.view.View.measure(View.java:17430)
[MonoDroid]     at android.widget.RelativeLayout.measureChild(RelativeLayout.java:697)
[MonoDroid]     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:481)
[MonoDroid]     at android.view.View.measure(View.java:17430)
[MonoDroid]     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
[MonoDroid]     at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
[MonoDroid]     at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139)
[MonoDroid]     at android.view.View.measure(View.java:17430)
[MonoDroid]     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
[MonoDroid]     at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:393)
[MonoDroid]     at android.view.View.measure(View.java:17430)
[MonoDroid]     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
[MonoDroid]     at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
[MonoDroid]     at android.view.View.measure(View.java:17430)
[MonoDroid]     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
[MonoDroid]     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
[MonoDroid]     at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
[MonoDroid]     at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
[MonoDroid]     at android.view.View.measure(View.java:17430)
[MonoDroid]     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
[MonoDroid]     at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
[MonoDroid]     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2560)
[MonoDroid]     at android.view.View.measure(View.java:17430)
[MonoDroid]     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2001)
[MonoDroid]     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1166)
[MonoDroid]     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1372)
[MonoDroid]     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)
[MonoDroid]     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779)
[MonoDroid]     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
[MonoDroid]     at android.view.Choreographer.doCallbacks(Choreographer.java:580)
[MonoDroid]     at android.view.Choreographer.doFrame(Choreographer.java:550)
[MonoDroid]     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
[MonoDroid]     at android.os.Handler.handleCallback(Handler.java:739)
[MonoDroid]     at android.os.Handler.dispatchMessage(Handler.java:95)
[MonoDroid]     at android.os.Looper.loop(Looper.java:135)
[MonoDroid]     at android.app.ActivityThread.main(ActivityThread.java:5221)
[MonoDroid]     at java.lang.reflect.Method.invoke(Native Method)
[MonoDroid]     at java.lang.reflect.Method.invoke(Method.java:372)
[MonoDroid]     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
[MonoDroid]     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
android xamarin charts fragment syncfusion
1个回答
0
投票

[解决了]

崩溃是因为并行布局处理而引发的。所以,问题最终发生了。我们重构了一些东西,让片段只负责加载图形。

1.异步数据:在处理片段之前,我们将与API的所有通信移动到一个活动。

2.数据处理:从API获取数据后,我们处理数据模型并保存图形以供将来使用单一模式。

© www.soinside.com 2019 - 2024. All rights reserved.