将Xamarin.Forms更新为最新版本后,我收到以下错误:
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000c] in /Users/builder/data/lanes/2923/52635947/source/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143 在 Java.Interop.JniEnvironment + InstanceMethods.CallNonvirtualVoidMethod (JniObjectReference实例,JniObjectReference类型, Java.Interop.JniMethodInfo方法,Java.Interop.JniArgumentValue * args)[0x000a7] in /Users/builder/data/lanes/3340/4e275588/source/Java.Interop/src/Java.Interop/Java.Interop/JniEnvironment.g.cs:12083 在 Java.Interop.JniPeerMembers + JniInstanceMethods.InvokeVirtualVoidMethod (System.String encodedMember,IJavaPeerable self, Java.Interop.JniArgumentValue *参数)[0x00068] in /Users/builder/data/lanes/3340/4e275588/source/Java.Interop/src/Java.Interop/Java.Interop/JniPeerMembers.JniInstanceMethods_Invoke.cs:31 在Android.Widget.ImageView.SetScaleType(Android.Widget.ScaleType scaleType)[0x0002c] in /Users/builder/data/lanes/3340/4e275588/source/monodroid/src/Mono.Android/platforms/android-23/src/generated/Android.Widget.ImageView.cs:1300 在Xamarin.Forms.Platform.Android.ImageRenderer.UpdateAspect() [0x00011] in C:\ BuildAgent2 \工作\ aad494dc9bc9783 \ Xamarin.Forms.Platform.Android \渲染器\ ImageRenderer.cs:56 在Xamarin.Forms.Platform.Android.ImageRenderer.OnElementChanged (Xamarin.Forms.Platform.Android.ElementChangedEventArgs
1 e) [0x0002e] in C:\BuildAgent2\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\Renderers\ImageRenderer.cs:40 at EForms.Droid.Controls.EImageRenderer.OnElementChanged (Xamarin.Forms.Platform.Android.ElementChangedEventArgs
1 e)[0x00002] 在 E:\项目\ BBQMVP \烧烤\手机\ LIB \ EFORMS \ EForms.Droid的\ src \渲染器\控件\ EImageRenderer.cs:24 ---托管异常堆栈跟踪结束--- java.lang.NullPointerException at android.widget.ImageView.setScaleType(ImageView.java:549)at mono.java.lang.RunnableImplementor.n_run(Native Method)at mono.java.lang.RunnableImplementor.run(RunnableImplementor.java:30) 在android.os.Handler.handleCallback(Handler.java:730)处 android.os.Handler.dispatchMessage(Handler.java:92)at android.os.Looper.loop(Looper.java:176)at android.app.ActivityThread.main(ActivityThread.java:5419)at java.lang.reflect.Method.invokeNative(Native Method)at java.lang.reflect.Method.invoke(Method.java:525)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1046) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)at dalvik.system.NativeStart.main(原生方法)
任何人都可以在更新xamarin.forms之后建议这是xamarin.forms问题还是一些Android配置问题?
答案 0 :(得分:0)
在ImageView源代码中
public void setScaleType(ScaleType scaleType) {
if (scaleType == null) {
throw new NullPointerException();
}
if (mScaleType != scaleType) {
mScaleType = scaleType;
setWillNotCacheDrawing(mScaleType == ScaleType.CENTER);
requestLayout();
invalidate();
}
}
在ImageRenderer中
void UpdateAspect()
{
AImageView.ScaleType type = Element.Aspect.ToScaleType();
Control.SetScaleType(type);
}
那么,看起来你的Xamarin.Forms.Image的Aspect被意外设置为null?
答案 1 :(得分:0)
Xamarin表单,并不总是与最新版本的Android支持库兼容。如果安装的android支持库与安装Xamarin Forms版本不兼容,则解决方案不会编译。
要解决上述问题,请右键单击解决方案并打开nuget包管理器。转到已安装的选项卡并删除Xamarin表单,然后逐个删除所有的android支持库。
一旦卸载了Xamarin Forms和所有Android支持库,请安装稳定版本的Xamarin Forms。这将依次安装兼容的Android支持库集。
如果解决方案仍未编译,请尝试以下方法: 1)确保安装了最新的JDK并且VS正确指向它 2)转到C:\ Users [UserName] \ appdata \ local,然后删除Xamarin文件夹 3)在VS中打开解决方案,清理并重建。重建,等待并稍后检查需要一段时间。