2016-10-03 17 views
1

私がやりたいことは、ここで答えたものを基本的にされています。しかし、私はC#でXamarinでの作業、およびてる取得HTMLコンテンツ(C#のでXamarinを使用して)

how to get html content from a webview?

一番上の答えに与えられたコードはjavaにあります。

public class LoginWebViewController : Activity 
{ 
    WebView localWebView; 

    protected override void OnCreate(Bundle savedInstanceState) 
    { 
     base.OnCreate(savedInstanceState); 

     SetContentView(Resource.Layout.WebView); 

     localWebView = FindViewById<WebView>(Resource.Id.LocalWebView); 
     localWebView.SetWebViewClient(new JustWebViewClient()); 

     localWebView.LoadUrl(LoginOperations.GetTPLoginUrl()); 

     localWebView.Settings.JavaScriptEnabled = true; 
     localWebView.AddJavascriptInterface(new MyJavaScriptInterface(this), "HtmlViewer"); 


    } 

    class MyJavaScriptInterface 
    { 
     private Context ctx; 

     MyJavaScriptInterface(Context ctx) 
     { 
      this.ctx = ctx; 
     } 

     public void showHTML(String html) 
     { 
      Console.WriteLine(html); 
     } 

    } 
} 

しかし、私は次のエラーを取得する:私は次のようにC#2にそれを翻訳してみました

enter image description here

私は国民にクラスを変更しようとしたが、それはまだ同じエラーになります。なにが問題ですか?

追加コード:

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

     Console.WriteLine("DONE LOADING PAGE"); 

     view.LoadUrl("javascript:HtmlViewer.showHTML" + 
       "('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');"); 


    } 
} 

答えて

1

あなたのコンストラクタはパブリックではありません、あなたはJava.Lang.Objectを継承しなければなりません。 Export属性も追加する必要があります。

class MyJavaScriptInterface : Java.Lang.Object 
{ 
    private Context ctx; 

    public MyJavaScriptInterface(Context ctx) 
    { 
     this.ctx = ctx; 
    } 

    public MyJavaScriptInterface(IntPtr handle, JniHandleOwnership transfer) 
     : base (handle, transfer) 
    { 
    } 

    [Export("showHTML")] 
    public void showHTML(string html) 
    { 
     Console.WriteLine(html); 
    } 
} 

JavaScriptコードにもエラーがあります。あなたはshowHTMLの後に開口部(がありません。

view.LoadUrl("javascript:HtmlViewer.showHTML(" + ... 
+0

ありがとうございます。これらの後には、ExportAttributeまたはExportFieldAttributeを使用するときは、おそらくMono.Android.Export.Dllへの参照を追加する必要がありますhttp://i.imgur.com/lXWroHB.png –

関連する問題