Reputation: 121
This is what i get as error "WebViewRenderer.WebViewRenderer() is Obsolete
"This constructor is obsolete as of version 2.5. Please use the WebViewRenderer(Context) instead
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Xamarin.Forms;
using ZoomWebView;
using Xamarin.Forms.Platform.Android;
using ZoomWebView.Droid;
using System.ComponentModel;
using Android.Webkit;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
using Xamarin.Forms.Internals;
using System.Threading.Tasks;
[assembly: ExportRenderer(typeof(MyWebView), typeof(MyWebViewRenderer))]
namespace ZoomWebView.Droid
{
public class MyWebViewRenderer : WebViewRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
{
base.OnElementChanged(e);
if (e.OldElement != null || Element == null)
{
return;
}
var element = Element as MyWebView;
Control.Settings.TextZoom = element.ZoomInLevel;
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if(Control != null)
{
Control.Settings.BuiltInZoomControls = true;
Control.Settings.DisplayZoomControls = true;
}
var element = Element as MyWebView;
Control.Settings.TextZoom = element.ZoomInLevel;
base.OnElementPropertyChanged(sender, e);
}
}
I expected the Code to run Because i followed a particular series on youtube But it's not. Please is there any thing i am doing wrong ?
Upvotes: 3
Views: 3599
Reputation: 16562
The reason it happened is quite simple Xamarin.Forms as of v2.4 marked Xamarin.Forms.Forms Context property as obsolete. So to get global context for renderer's it is necessary that you call the base class of that renderer meaning in your constructor you do the following:
public MyWebViewRenderer(Context context) : base(context)
{
}
XF now recommends you use James Montemagno's Current Activity Plugin. If you need the current context
Upvotes: 1
Reputation: 7199
You need to add the context:
public MyWebViewRenderer(Context context) : base(context)
{
}
In your code:
namespace ZoomWebView.Droid
{
public class MyWebViewRenderer : WebViewRenderer
{
public MyWebViewRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
{
base.OnElementChanged(e);
if (e.OldElement != null || Element == null)
{
return;
}
var element = Element as MyWebView;
Control.Settings.TextZoom = element.ZoomInLevel;
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if(Control != null)
{
Control.Settings.BuiltInZoomControls = true;
Control.Settings.DisplayZoomControls = true;
}
var element = Element as MyWebView;
Control.Settings.TextZoom = element.ZoomInLevel;
base.OnElementPropertyChanged(sender, e);
}
}
}
Upvotes: 9