加载我的MainPage Visual Studio进入中断模式时出现以下错误
System.MissingMethodException:找不到类型为Test.Renderers.PostListViewAndroid的默认构造函数
我更新了我的自定义渲染器类以支持2.5,因为 Context从版本2.5开始已经过时
我的自定义渲染器是
java -jar <JAR file path>
PostListView就是
[assembly: ExportRenderer(typeof(PostListView), typeof(PostListViewAndroid))]
namespace SocialNetwork.Droid.Renderers
{
public class PostListViewAndroid: ListViewRenderer
{
public PostListViewAndroid(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<ListView> e)
{
base.OnElementChanged(e);
Control.SetSelector(Android.Resource.Color.Transparent);
}
}
}
答案 0 :(得分:6)
如果您使用的是Xamarin.Forms&gt; = 2.5,则需要使用ListViewRenderer(Context context) : base(context)
这是当前ListViewRenderer
public class ListViewRenderer : ViewRenderer<ListView, AListView>, SwipeRefreshLayout.IOnRefreshListener
{
...
public ListViewRenderer(Context context) : base(context)
{
AutoPackage = false;
}
[Obsolete("This constructor is obsolete as of version 2.5. Please use ListViewRenderer(Context) instead.")]
public ListViewRenderer()
{
AutoPackage = false;
}
注意Obsolete
属性,这意味着您不需要它。但是,您的问题似乎是您的包和引用不一致。我尝试以下步骤
第1步
第2步
尝试在程序包程序包中更新解决方案的所有程序包
Update-Package –reinstall
完成此步骤后,如果仍然无效,请再次尝试步骤1
答案 1 :(得分:2)
如果基类没有默认的空构造函数(在您的情况下为ListViewRenderer
) - 则无法执行此操作。如果有,请在下面添加
public PostListViewAndroid()
{
}
它的原因很简单:在实例化中派生类时,调用第一个基类构造函数进行初始化。因此,如果基类中没有默认构造函数,那么它就无法解决。
答案 2 :(得分:0)
我遇到了类似的问题,但我的案子却忘记了将上下文承包商公开。
我对此进行了更改:
PostListViewAndroid(Context context) : base(context)
对此:
public PostListViewAndroid(Context context) : base(context)