Xamarin Android FFImageLoading ImageService.Instance.LoadUrl()System.NullReferenceException

时间:2017-04-27 06:06:01

标签: c# android xamarin xamarin.android ffimageloading

FFImageLoading 我遇到了一个奇怪的问题。编译器不会显示任何错误,但是当应用程序在设备上启动时,会抛出异常: 的 System.NullReferenceException

代码:

C#

private void setUserImage()
{
    ImageService.Instance.Initialize();
    imgThunbailUsername = FindViewById<ImageViewAsync>(Resource.Id.imgDisplay);
    string url = @"https://lh4.googleusercontent.com/-Lfgi-xEMwuk/VNWoy8EDWcI/AAAAAAAAACk/rwsluNfhSZY/w1486-h832-no/photo.jpg";

    ImageService.Instance.LoadUrl(url)
        .Retry(3, 200)
        .DownSample(60, 60)
        .Into(imgThunbailUsername); // compiler points here with an exception
}

XML

<FFImageLoading.Views.ImageViewAsync
  android:id="@+id/imgDisplay"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:scaleType="fitCenter" />

我要感谢任何提示,想法,甚至是Xamarin中图像的另一个好工具。

1 个答案:

答案 0 :(得分:1)

好的,我发现了什么是错的。下面的XML不直接在ViewModel下。

<FFImageLoading.Views.ImageViewAsync
  android:id="@+id/imgDisplay"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:scaleType="fitCenter" />

那里的XML被称为

<android.support.design.widget.NavigationView
  android:layout_width="wrap_content"
  android:layout_height="match_parent"
  android:layout_gravity="start"
  android:background="@android:color/white"
  android:id="@+id/nav_view"
  app:headerLayout="@layout/drawer_header" <!-- here -->
  app:menu="@menu/navmenu" />
</android.support.v4.widget.DrawerLayout>

所以在这种情况下我必须正确地调用视图:

View headerLayout = navigationView.InflateHeaderView(Resource.Layout.drawer_header);

依此类推使用FindViewById

imgThunbailUsername = headerLayout.FindViewById<ImageViewAsync>(Resource.Id.imgDisplay);

所以我需要做的只是获得一个View headerlayout InflateHeaderView