android - 应用程序崩溃而没有明确指出其来源
问题描述
该应用程序崩溃并记录以下转储:
Message: Cannot set 'scaleX' to Float.NaN
Java.Interop.JniEnvironment+InstanceMethods.CallNonvirtualVoidMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniObjectReference type, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x0008e] in <58e6b6e8a7914acd9424d6f6da5bca31>
Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeVirtualVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x0005d] in <58e6b6e8a7914acd9424d6f6da5bca31>
Android.Views.View.set_ScaleX (System.Single value) [0x00022] in <947f416de12142bb922b5c54b8f841f0>
Xamarin.Forms.Platform.Android.VisualElementTracker.UpdateScale () [0x00025] in <9e919e3d32554840a213a0a951bd96a0>
Xamarin.Forms.Platform.Android.VisualElementTracker.HandlePropertyChanged (System.Object sender, System.ComponentModel.PropertyChangedEventArgs e) [0x002d9] in <9e919e3d32554840a213a0a951bd96a0>
Xamarin.Forms.Platform.Android.VisualElementTracker.HandleRedrawNeeded (System.Object sender, Xamarin.Forms.Internals.EventArg`1[T] e) [0x0001d] in <9e919e3d32554840a213a0a951bd96a0>
(wrapper delegate-invoke) System.EventHandler`1[Xamarin.Forms.Internals.EventArg`1[Xamarin.Forms.VisualElement]].invoke_void_object_TEventArgs(object,Xamarin.Forms.Internals.EventArg`1<Xamarin.Forms.VisualElement>)
Xamarin.Forms.VisualElement.BatchCommit () [0x0002e] in <34017a75c85c45aa9f9e020189ac2ac1>
Xamarin.Forms.AnimationExtensions.HandleTweenerUpdated (System.Object o, System.EventArgs args) [0x0004f] in <34017a75c85c45aa9f9e020189ac2ac1>
Xamarin.Forms.Tweener.<Start>b__22_0 (System.Int64 step) [0x00056] in <34017a75c85c45aa9f9e020189ac2ac1>
Xamarin.Forms.Internals.Ticker.SendSignals (System.Int64 step) [0x0003c] in <34017a75c85c45aa9f9e020189ac2ac1>
Xamarin.Forms.Internals.Ticker.SendSignals (System.Int32 timestep) [0x00014] in <34017a75c85c45aa9f9e020189ac2ac1>
Xamarin.Forms.Platform.Android.AndroidTicker.OnValOnUpdate (System.Object sender, Android.Animation.ValueAnimator+AnimatorUpdateEventArgs e) [0x00000] in <9e919e3d32554840a213a0a951bd96a0>
Android.Animation.ValueAnimator+IAnimatorUpdateListenerImplementor.OnAnimationUpdate (Android.Animation.ValueAnimator animation) [0x00017] in <947f416de12142bb922b5c54b8f841f0>
Android.Animation.ValueAnimator+IAnimatorUpdateListenerInvoker.n_OnAnimationUpdate_Landroid_animation_ValueAnimator_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_animation) [0x0000f] in <947f416de12142bb922b5c54b8f841f0>
(wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.121(intptr,intptr,intptr)
--- End of managed Java.Lang.IllegalArgumentException stack trace ---
java.lang.IllegalArgumentException: Cannot set 'scaleX' to Float.NaN
android.view.View.sanitizeFloatPropertyValue in View.java:17108
android.view.View.sanitizeFloatPropertyValue in View.java:17082
android.view.View.setScaleX in View.java:16435
mono.android.animation.ValueAnimator_AnimatorUpdateListenerImplementor.n_onAnimationUpdate(Native Method)
mono.android.animation.ValueAnimator_AnimatorUpdateListenerImplementor.onAnimationUpdate in ValueAnimator_AnimatorUpdateListenerImplementor.java:30
android.animation.ValueAnimator.animateValue in ValueAnimator.java:1558
android.animation.ValueAnimator.animateBasedOnTime in ValueAnimator.java:1349
android.animation.ValueAnimator.doAnimationFrame in ValueAnimator.java:1481
android.animation.AnimationHandler.doAnimationFrame in AnimationHandler.java:146
android.animation.AnimationHandler.access$100 in AnimationHandler.java:37
android.animation.AnimationHandler$1.doFrame in AnimationHandler.java:54
android.view.Choreographer$CallbackRecord.run in Choreographer.java:965
android.view.Choreographer.doCallbacks in Choreographer.java:791
android.view.Choreographer.doFrame in Choreographer.java:722
android.view.Choreographer$FrameDisplayEventReceiver.run in Choreographer.java:952
android.os.Handler.handleCallback in Handler.java:883
android.os.Handler.dispatchMessage in Handler.java:100
android.os.Looper.loop in Looper.java:214
android.app.ActivityThread.main in ActivityThread.java:7356
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run in RuntimeInit.java:492
com.android.internal.os.ZygoteInit.main in ZygoteInit.java:930
这种情况没有明确的重复。
如果有人有关于这个例外的信息,我很想听听。
我在应用程序中使用 scaleX 的唯一地方是同步融合 SfBorder:
xmlns:border="clr-namespace:Syncfusion.XForms.Border;assembly=Syncfusion.Core.XForms"
<border:SfBorder x:Name="DummySearchBox"
BorderWidth="0"
CornerRadius="5"
HasShadow="True"
InputTransparent="False"
ShadowColor="{StaticResource SilverSemiTransparent}"
HorizontalOptions="Fill"
VerticalOptions="Start"
TranslationX="30"
TranslationY="24"
ScaleX="1"
Margin="0,0,60,0">
我在后面的代码中更改了它的 ScaleX:
private async Task EnterFocusMode()
{
await Device.InvokeOnMainThreadAsync(async () =>
{
DummySearchBox.ScaleX = 1;
await Task.WhenAll(
DummySearchBox.TranslateTo(0, 0, 500),
DummySearchBox.ScaleXTo(1.2, 500),
DummySearchBox.FadeTo(0, 200)
);
DummySearchBox.InputTransparent = true;
});
}
private async Task ExitFocusMode()
{
await Device.InvokeOnMainThreadAsync(async () =>
{
DummySearchBox.ScaleX = 1.2;
await Task.WhenAll(
DummySearchBox.FadeTo(1, 200),
DummySearchBox.TranslateTo(30, 24, 500),
DummySearchBox.ScaleXTo(1, 500)
);
DummySearchBox.InputTransparent = false;
DummySearchBox.Focus();
});
}
public void Dispose()
{
Device.BeginInvokeOnMainThread(() =>
{
DummySearchBox.Opacity = 1;
DummySearchBox.TranslationX = 30;
DummySearchBox.TranslationY = 24;
DummySearchBox.ScaleX = 1;
DummySearchBox.InputTransparent = false;
});
}
有人熟悉这种例外或情况吗?
解决方案
您的代码在我的开发环境中运行良好。Xamarin Forms (4.8.0) 和 Syncfusion 核心和 Sfborder (18.4.0.30) - 设备 iPhone 11 模拟器 (14.3) 和 Android Pie 9.0 API 28。
你能回复我你的开发环境吗?您的 Syncfusion 版本是多少?
推荐阅读
- html - Bootstrap - 在 div 中间获取我的 P(具有打字效果)
- php - 在 OSX 上为 PHP 5.6 安装 phpredis 不起作用
- mysql - Mysql - 类似 XML 的表,在同一列中有多个值
- google-sheets - 你如何在谷歌文档的交叉表中求和值
- reactjs - 将 React 类组件转换为功能组件
- python - 在 python 中,我如何轮廓 x、y、z 数据?
- angular - Angular9:ngcc 无法运行
- angular - 如何从 Angular 9 中的服务返回的变量中获取或使用数据?
- recursion - HSQLDB中的递归存储过程
- azure - 存储帐户阻止容器创建的网络规则