将Xamarin.Forms更新为2.3.0.49后收到错误

时间:2016-06-22 14:34:16

标签: c# android xamarin xamarin.android xamarin.forms

将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配置问题?

2 个答案:

答案 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中打开解决方案,清理并重建。重建,等待并稍后检查需要一段时间。

相关问题