日期:2014-05-17  浏览次数:20861 次

【C#+Mono新手求助】如何拦截WebView控件中的超级链接事件及其它若干问题?
大家好,初次发帖,C#完全门外汉:)

事情是这样的,我想写一个Android应用,这个应用的界面是一个网页,位于远程服务器上,其中有N个超级链接,地址如button://cmdLogin_Click/,button://cmdExit_Click/这样的,用于用户的输入,同时还有一些文本框,也需要在程序中取得其内容.

现在想要拦截到上面的超级链接,并由程序来响应,这在VB中可以使用WebBrowser控件的BeforeNavigate2事件来完成,这个事件中的Url参数就是所点击的链接,只需要判断它就可以了.

但是在C#中不知道应该如何做到?

目前我的做法是新建一个类继承自WebViewClient,然后扔给WebView,但工程运行后自动退出了,汗...

主活动中的代码如下:

using System;

using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Android.Webkit;

namespace Sentry
{
    [Activity(Label = "Sentry968", MainLauncher = true, Icon = "@drawable/icon")]
    public class Activity1 : Activity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            WebView VW = FindViewById<WebView>(Resource.Id.webView1);
            myWVC Wvc = new myWVC();

            VW.SetWebViewClient(Wvc);
            VW.LoadUrl("http://xxxxxxxx/");
        }
    }
    class myWVC : WebViewClient
    {
        public override bool ShouldOverrideUrlLoading(WebView view, string url)
        {
            switch (url)
            {
                case "button://cmdExit_Click/":
                    System.Environment.Exit(0);
                    break;
            }
            return base.ShouldOverrideUrlLoading(view, url);
        }
    }
}



现在很怀疑是有语法错误,因为我毕竟没玩过C#以及Mono,可是编译布署都一切正常,于是百思不得骑姐了.....

另外还想请教的是,有什么日志输出的方式可以在Android中使用?如果可以调试的话自己还能慢慢摸索.

谢谢大家!

------解决方案--------------------
给你刷个色吧。不过坦率地说,C#+Mono这种非主流的方案不会有多少人关注的,无论你是在C#(或者Mono)社区还是在Android社区讨论,关注者都是寥寥。
------解决方案--------------------
学习。希望mono可以被微软给招安。