2016-10-19 4 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)); 
     } 
    } 
} 

우리는 '[프로그램 응용] .Android는'네임 스페이스에 존재하지 않는 ''Android.Webkit를 사용하여 '이 있지만 오류'형식 또는 네임 스페이스 이름 '웹킷 만났다된다. 어셈블리 참조가 누락 되었습니까? '

내 앱 네임 스페이스 내부에서 찾고있는 것 같습니다. 문제가 될 수 있습니다. 그러나 우리는 그것을 어떻게 해결해야할지 모른다.

도움을 주시면 감사하겠습니다.

답변

2

프로젝트에서 다른 Android 네임 스페이스와 혼동을 일으키는 것 같습니다. 당신은 또한 별칭

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

감사 제이슨을 정의 할 수있는 글로벌 네임 스페이스

global::Android.Webkit.WebView 

를 사용해보십시오! 너는 그것을 고쳤다. 아직 답을 받아 들일 수는 없지만 최대한 빨리 받아 들일 수는 있습니다. 감사! – Max

관련 문제