Как я могу решить WebViewRenderer устарел - PullRequest
0 голосов
/ 26 января 2019

Это то, что я получаю как ошибку "WebViewRenderer.WebViewRenderer () устарел

"Этот конструктор устарел с версии 2.5. Вместо этого используйте WebViewRenderer (Context)

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);
    }
}

Я ожидал, что код будет запущен, потому что я следил за определенной серией на YouTube, но это не так. Пожалуйста, есть что-то, что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 26 января 2019

Причина, по которой это произошло, довольно проста: Xamarin.Forms начиная с версии 2.4 помечало свойство контекста Xamarin.Forms.Forms как устаревшее. Таким образом, чтобы получить глобальный контекст для рендерера, необходимо вызвать базовый класс этого рендерера, что означает в вашем конструкторе, что вы делаете следующее:

public MyWebViewRenderer(Context context) : base(context)
{

}

XF теперь рекомендует использовать Текущий плагин Джеймса Монтемагно . Если вам нужен текущий контекст

0 голосов
/ 26 января 2019

Вам необходимо добавить контекст:

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

В вашем коде:

  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);
        }
    }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...