2017-04-27 75 views
0

我有一个奇怪的问题,FFImageLoading。编译器不显示任何错误,但在应用程序在设备上启动时,会引发异常: System.NullReferenceExceptionXamarin Android FFImageLoading ImageService.Instance.LoadUrl()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

你调试过吗? 'imgThunbailUsername'为空吗? – SushiHangover

+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 headerlayoutInflateHeaderView