2016-10-19 12 views
0

WebView用のカスタムレンダラーを作成しようとしています。唯一の問題は、XamarinがAndroid.Webkit.WebViewを見つけることができないことです。Xamarin - Android.Webkitにアクセスできません

using [AppName]; 
using [AppName].Droid; 
using Xamarin.Forms; 
using Xamarin.Forms.Platform.Android; 
using Mono; 
using Android.Webkit; 

[assembly: ExportRenderer(typeof(HybridWebView),   typeof(HybridWebViewRenderer))] 
namespace [AppName].Droid 
{ 
public class HybridWebViewRenderer : ViewRenderer<HybridWebView,  Android.Webkit.WebView> 
{ 
    const string JavaScriptFunction = "function invokeCSharpAction(data){jsBridge.invokeAction(data);}"; 

    protected override void OnElementChanged(ElementChangedEventArgs<HybridWebView> e) 
    { 
     base.OnElementChanged(e); 

     if (Control == null) 
     { 
      var webView = new Android.Webkit.WebView(Forms.Context); 
      webView.Settings.JavaScriptEnabled = true; 
      SetNativeControl(webView); 
     } 
     if (e.OldElement != null) 
     { 
      Control.RemoveJavascriptInterface("jsBridge"); 
      var hybridWebView = e.OldElement as HybridWebView; 


     } 
     if (e.NewElement != null) 
     { 
      Control.LoadUrl(string.Format("file:///android_asset/Content/{0}", Element.Source)); 
      InjectJS(JavaScriptFunction); 
     } 
    } 

    void InjectJS(string script) 
    { 
     if (Control != null) 
     { 
      Control.LoadUrl(string.Format("javascript: {0}", script)); 
     } 
    } 
} 

私たちは、「型または名前空間名 『のWebkitは』 `[AppNameは] .Android名前空間に存在しない」「Android.Webkitを使用して」はエラーで満たされています。アセンブリの参照がありませんか?

アプリの名前空間の内側に探しているようですが、それは問題のようです。しかし、私たちはそれをどのように解決するかについては考えていません。

ご協力いただければ幸いです。

答えて

2

あなたのプロジェクトで別のAndroid名前空間と混同しているようです。グローバル名前空間

global::Android.Webkit.WebView 

を使用してみてください、あなたはまた、別名

using web = global::Android.Webkit.WebView; 
+0

おかげでジェイソンを定義することができます!あなたはそれを修正した。答えはまだ明らかに受け入れることができませんが、うまく受け入れられません。ありがとう! – Max

関連する問題