Xamarin: Как ссылаться на ScrollView внутри OnPageFinished? - PullRequest
0 голосов
/ 01 декабря 2018

Я пытаюсь прослушать завершение LoadUrl WebView, используя OnPageFinished внутри класса WebViewClient, а затем запустить ScrollTo для ScrollView.Код компилируется, но мое приложение аварийно завершает работу при загрузке, и в отладке не возникает исключение.

public class MyWebViewClient : WebViewClient
{
    public override void OnPageFinished(WebView view, string url)
    {
        base.OnPageFinished(view, url);

        Activity _whatsOnActivity = new WhatsOnActivity();

        ScrollView _view = _whatsOnActivity.FindViewById<ScrollView>(Resource.Id.scrollView66);

        _view.ScrollTo(0, 0);
    }
}

, и вот как выглядит моя активность:

[Activity]
public class WhatsOnActivity : Activity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        SetContentView(Resource.Layout.whatsOn);

        WebView whatsOnWebView = FindViewById<WebView>(Resource.Id.webViewWhatsOn);

        MyWebViewClient instance = new MyWebViewClient();

        whatsOnWebView.SetBackgroundColor(Android.Graphics.Color.Green);

        whatsOnWebView.SetWebViewClient(new MyWebViewClient());

        whatsOnWebView.LoadUrl("https://www.bitchute.com/#listing-subscribed");
        whatsOnWebView.Settings.JavaScriptEnabled = true;
        whatsOnWebView.Settings.BuiltInZoomControls = true;
        whatsOnWebView.Settings.SetSupportZoom(true);
        whatsOnWebView.ScrollbarFadingEnabled = false;
    }
}

Что я делаю неправильно?

Весь проект можно найти здесь: https://github.com/hexag0d/bitchute_mobile_android_a2

1 Ответ

0 голосов
/ 03 декабря 2018

XAMARIN: как ссылаться на ScrollView внутри OnPageFinished?

Добавление метода построения для вашего MyWebViewClient может решить эту проблему:

public class MyWebViewClient : WebViewClient
{
    private WhatsOnActivity whatsOnActivity;

    public MyWebViewClient(WhatsOnActivity whatsOnActivity)
    {
        this.whatsOnActivity = whatsOnActivity;
    }

    public override void OnPageFinished(WebView view, string url)
    {

        base.OnPageFinished(view, url);

        //Activity _whatsOnActivity = new WhatsOnActivity();

        ScrollView _view = whatsOnActivity.FindViewById<ScrollView>(Resource.Id.scrollView1);

        _view.ScrollTo(0, 0);

    }
}
...