You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Xamarin.Forms中WebView的Navigated方法转为Xamarin.Android等效实现?

我来帮你搞定Xamarin.Android里对应Xamarin.Forms WebView Navigated事件的实现,你选OnPageFinished方向是对的,但大概率是配置环节没做对导致没生效,咱们一步步来调整:

1. 先明确对应关系

Xamarin.Forms里的Navigated事件(页面加载完成后触发),在Android原生WebView里对应的就是WebViewClient类的OnPageFinished方法——你找的点没错,只是需要把这个自定义的客户端绑定到WebView上才行。

2. 正确的实现步骤

首先,创建一个自定义的WebViewClient子类,把你的业务逻辑写在重写的OnPageFinished里:

public class CustomWebViewClient : WebViewClient
{
    private readonly YourActivity _hostActivity;

    // 传递宿主Activity,方便调用页面里的对象(比如你的paynetz实例)
    public CustomWebViewClient(YourActivity activity)
    {
        _hostActivity = activity;
    }

    public override void OnPageFinished(Android.Webkit.WebView view, string url)
    {
        base.OnPageFinished(view, url);
        System.Diagnostics.Debug.WriteLine("Page url=>" + url);

        // 你的原有逻辑,这里注意上下文的调用
        if (url.Contains(Paynetz.model.PaynetzConfig.GetResponseExpression()))
        {
            var result = _hostActivity.paynetz.ValidateResponse();
            view.GoBack();
        }
    }
}

然后在你的Activity中,找到原生WebView控件,把这个自定义客户端绑定上去,同时做基础配置:

// 替换成你布局里WebView的实际ID
var nativeWebView = FindViewById<Android.Webkit.WebView>(Resource.Id.webView);

// 绑定自定义WebViewClient,这一步是关键!
nativeWebView.SetWebViewClient(new CustomWebViewClient(this));

// 如果你的网页需要JS支持,别忘了开启
nativeWebView.Settings.JavaScriptEnabled = true;
3. 排查你之前代码无效的原因

你之前的代码没生效,最可能的原因就是没把自定义的WebViewClient设置给WebView——默认的WebView用的是系统自带的WebViewClient,不会触发你重写的OnPageFinished。另外还要注意这几点:

  • 确认PaynetzConfig.GetResponseExpression()返回的字符串能正确匹配目标URL,避免因为字符串不匹配导致逻辑没触发
  • 页面如果有重定向,OnPageFinished会被多次调用,你可以加个标记位避免重复执行逻辑
  • 别搞混WebViewClient和WebChromeClient:后者主要处理JS弹窗、页面进度这些,页面加载完成的逻辑还是要放在WebViewClient里
4. 额外补充

如果还需要对应Forms里的Navigating事件(页面开始加载前触发),Android端对应的是WebViewClient的ShouldOverrideUrlLoading方法,你可以按需重写它来做拦截或预处理。

内容的提问来源于stack exchange,提问作者Arvind Chourasiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:32:05