SwitchRender.SwitchRender();Xamarin.Forms渲染器已过时

SwitchRender.SwitchRender();Xamarin.Forms渲染器已过时,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我正在Android中实现SwitchRenderer的代码,但当我收到警告时,代码似乎存在问题: “SwitchRender.SwitchRender()”已过时;'这位建筑师是 从2.5版起,将被淘汰。请改用SwitchRender(上下文)。' 有人知道我如何解决这个问题吗: using Japanese.Android; using Xamarin.Forms; using Xamarin.Forms.Platform.Android; using Japanese; [assembl

我正在Android中实现SwitchRenderer的代码,但当我收到警告时,代码似乎存在问题:

“SwitchRender.SwitchRender()”已过时;'这位建筑师是 从2.5版起,将被淘汰。请改用SwitchRender(上下文)。'

有人知道我如何解决这个问题吗:

using Japanese.Android;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
using Japanese;

[assembly: ExportRenderer(typeof(ExtSwitch), typeof(ExtSwitchRenderer))]
namespace Japanese.Android
{
    public class ExtSwitchRenderer : SwitchRenderer
    {
        private ExtSwitch view;

        protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Switch> e)
        {
            base.OnElementChanged(e);
            if (e.OldElement != null || e.NewElement == null)
                return;
            view = (ExtSwitch)Element;
            if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.JellyBean)
            {
                if (this.Control != null)
                {
                    if (this.Control.Checked)
                    {
                        this.Control.TrackDrawable.SetColorFilter(view.SwitchOnColor.ToAndroid(), PorterDuff.Mode.SrcAtop);
                    }
                    else
                    {
                        this.Control.TrackDrawable.SetColorFilter(view.SwitchOffColor.ToAndroid(), PorterDuff.Mode.SrcAtop);
                    }
                    this.Control.CheckedChange += this.OnCheckedChange;
                    UpdateSwitchThumbImage(view);
                }
                //Control.TrackDrawable.SetColorFilter(view.SwitchBGColor.ToAndroid(), PorterDuff.Mode.Multiply);  
            }
        }

        private void UpdateSwitchThumbImage(CustomSwitch view)
        {
            if (!string.IsNullOrEmpty(view.SwitchThumbImage))
            {
                view.SwitchThumbImage = view.SwitchThumbImage.Replace(".jpg", "").Replace(".png", "");
                int imgid = (int)typeof(Resource.Drawable).GetField(view.SwitchThumbImage).GetValue(null);
                Control.SetThumbResource(Resource.Drawable.icon);
            }
            else
            {
                Control.ThumbDrawable.SetColorFilter(view.SwitchThumbColor.ToAndroid(), PorterDuff.Mode.Multiply);
                // Control.SetTrackResource(Resource.Drawable.track);  
            }
        }

        private void OnCheckedChange(object sender, CompoundButton.CheckedChangeEventArgs e)
        {
            if (this.Control.Checked)
            {
                this.Control.TrackDrawable.SetColorFilter(view.SwitchOnColor.ToAndroid(), PorterDuff.Mode.SrcAtop);
            }
            else
            {
                this.Control.TrackDrawable.SetColorFilter(view.SwitchOffColor.ToAndroid(), PorterDuff.Mode.SrcAtop);
            }
        }
        protected override void Dispose(bool disposing)
        {
            this.Control.CheckedChange -= this.OnCheckedChange;
            base.Dispose(disposing);
        }
    }
}
使用日语.Android;
使用Xamarin.Forms;
使用Xamarin.Forms.Platform.Android;
使用日语;
[程序集:ExportRenderer(typeof(ExtSwitch),typeof(ExtSwitchRenderer))]
名称空间Japanese.Android
{
公共类ExtSwitchRenderer:SwitchRenderer
{
私有交换机视图;
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(e.OldElement!=null | | e.NewElement==null)
返回;
视图=(ExtSwitch)元素;
if(Android.OS.Build.VERSION.SdkInt>=Android.OS.BuildVersionCodes.JellyBean)
{
if(this.Control!=null)
{
if(this.Control.Checked)
{
this.Control.TrackDrawable.SetColorFilter(view.SwitchOnColor.ToAndroid(),PorterDuff.Mode.SrcAtop);
}
其他的
{
this.Control.TrackDrawable.SetColorFilter(view.SwitchOffColor.ToAndroid(),PorterDuff.Mode.SrcAtop);
}
this.Control.CheckedChange+=this.OnCheckedChange;
更新SwitchThumbImage(视图);
}
//Control.TrackDrawable.SetColorFilter(view.SwitchBGColor.ToAndroid(),PorterDuff.Mode.Multiply);
}
}
私有void更新SwitchThumbImage(CustomSwitch视图)
{
如果(!string.IsNullOrEmpty(view.SwitchThumbImage))
{
view.SwitchThumbImage=view.SwitchThumbImage.Replace(“.jpg”和“”).Replace(“.png”和“”);
intimgid=(int)typeof(Resource.Drawable).GetField(view.SwitchThumbImage).GetValue(null);
Control.SetThumbResource(Resource.Drawable.icon);
}
其他的
{
Control.ThumbDrawable.SetColorFilter(view.SwitchThumbColor.ToAndroid(),PorterDuff.Mode.Multiply);
//Control.SetTrackResource(Resource.Drawable.track);
}
}
私有void OnCheckedChange(对象发送方,CompoundButton.CheckedChangeEventArgs e)
{
if(this.Control.Checked)
{
this.Control.TrackDrawable.SetColorFilter(view.SwitchOnColor.ToAndroid(),PorterDuff.Mode.SrcAtop);
}
其他的
{
this.Control.TrackDrawable.SetColorFilter(view.SwitchOffColor.ToAndroid(),PorterDuff.Mode.SrcAtop);
}
}
受保护的覆盖无效处置(布尔处置)
{
this.Control.CheckedChange-=this.OnCheckedChange;
基地。处置(处置);
}
}
}
查看答案。Android自定义渲染器的新方法是:

public class ExtSwitchRenderer : SwitchRenderer
{
    private ExtSwitch view;

    public ExtSwitchRenderer(Context context) : base(context) { }

    ....
}
然后,如果您确实需要在自定义呈现程序中使用Android上下文,您可以使用通过构造函数传入的上下文,而不是
Forms.context

查看答案。Android自定义渲染器的新方法是:

public class ExtSwitchRenderer : SwitchRenderer
{
    private ExtSwitch view;

    public ExtSwitchRenderer(Context context) : base(context) { }

    ....
}

然后,如果您确实需要在自定义渲染器中使用Android上下文,您可以使用通过构造函数传入的上下文,而不是
Forms.context

非常感谢!非常感谢!