首页 > 解决方案 > Xamarin:如何在 OnPageFinished 中引用 ScrollView?

问题描述

我正在尝试在 WebViewClient 类中使用 OnPageFinished 收听 WebView 完成 LoadUrl,然后在 ScrollView 上触发 ScrollTo。代码编译但我的应用程序在加载时崩溃,并且在调试中没有抛出异常。

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

标签: androidclassuser-interfacexamarin.androidscrollview

解决方案


XAMARIN:如何在 OnPageFinished 中引用 ScrollView?

为您添加一个构造方法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);

    }
}

推荐阅读